Skip to content

Commit

Permalink
Fix for pub scores about formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
jumperchen committed Feb 27, 2024
1 parent 3239014 commit 577c55d
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 64 deletions.
44 changes: 22 additions & 22 deletions lib/src/engine/socket.dart
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@ class Socket extends EventEmitter {
...opts,
};


this.opts['path'] =
this.opts['path'].toString().replaceFirst(RegExp(r'/$'), '') +
(this.opts['addTrailingSlash'] ? '/' : '');
Expand Down Expand Up @@ -128,7 +127,6 @@ class Socket extends EventEmitter {
/// @api public
static int protocol = parser.protocol; // this is an int


///
/// Creates transport of the given type.
///
Expand Down Expand Up @@ -250,21 +248,21 @@ class Socket extends EventEmitter {

_logger.fine('pausing current transport "${transport?.name}"');
this.transport?.pause(() {
if (failed) return;
if ('closed' == readyState) return;
_logger.fine('changing transport and sending upgrade packet');

cleanup();

setTransport(transport);
transport!.send([
{'type': 'upgrade'}
]);
emit('upgrade', transport);
transport = null;
upgrading = false;
flush();
});
if (failed) return;
if ('closed' == readyState) return;
_logger.fine('changing transport and sending upgrade packet');

cleanup();

setTransport(transport);
transport!.send([
{'type': 'upgrade'}
]);
emit('upgrade', transport);
transport = null;
upgrading = false;
flush();
});
} else {
_logger.fine('probe transport "$name" failed');
emitReserved('upgradeError',
Expand Down Expand Up @@ -428,10 +426,13 @@ class Socket extends EventEmitter {
///
void resetPingTimeout() {
pingTimeoutTimer?.cancel();
pingTimeoutTimer =
Timer(Duration(milliseconds: pingInterval != null && pingTimeout != null ? (pingInterval! + pingTimeout!) : 0), () {
onClose('ping timeout');
});
pingTimeoutTimer = Timer(
Duration(
milliseconds: pingInterval != null && pingTimeout != null
? (pingInterval! + pingTimeout!)
: 0), () {
onClose('ping timeout');
});
}

///
Expand Down Expand Up @@ -462,7 +463,6 @@ class Socket extends EventEmitter {
transport!.writable == true &&
upgrading != true &&
writeBuffer.isNotEmpty) {

final packets = getWritablePackets();
_logger.fine('flushing ${packets.length} packets in socket');
transport!.send(packets);
Expand Down
4 changes: 3 additions & 1 deletion lib/src/engine/transport.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ abstract class Transport extends EventEmitter {
/// @param {String} str
/// @return {Transport} for chaining
onError(msg, [desc]) {
super.emitReserved('error', {'msg': msg, 'desc': desc, 'type': 'TransportError'});
super.emitReserved(
'error', {'msg': msg, 'desc': desc, 'type': 'TransportError'});
return this;
}

Expand Down Expand Up @@ -102,6 +103,7 @@ abstract class Transport extends EventEmitter {
readyState = 'closed';
emitReserved('close', details);
}

get name;

void pause(Function() onPause) {}
Expand Down
19 changes: 8 additions & 11 deletions lib/src/engine/transport/polling_transport.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ import 'package:socket_io_client/src/engine/transport.dart';
import 'package:socket_io_common/src/engine/parser/parser.dart';
import 'package:socket_io_common/src/util/event_emitter.dart';


final Logger _logger = Logger('socket_io:transport.PollingTransport');

bool _hasXHR2() {
try {
// Dart's HttpRequest doesn't expose a direct way to check for XHR2 features,
// but attempting to use features like setting `responseType` could serve as a proxy.
final xhr = HttpRequest();
xhr.responseType = 'arraybuffer'; // Attempting to set a responseType supported by XHR2
xhr.responseType =
'arraybuffer'; // Attempting to set a responseType supported by XHR2
return true;
} catch (e) {
return false;
Expand Down Expand Up @@ -240,14 +240,10 @@ class PollingTransport extends Transport {

Request request([Map? opts]) {
opts = opts ?? {};
final mergedOpts = {
...opts,
xd: xd,
cookieJar: cookieJar,
...this.opts
};
final mergedOpts = {...opts, xd: xd, cookieJar: cookieJar, ...this.opts};
return Request(uri(), mergedOpts);
}

///
/// Sends data.
///
Expand Down Expand Up @@ -279,6 +275,7 @@ class PollingTransport extends Transport {
pollXhr = req;
}
}

class Request extends EventEmitter {
late Map opts;
late String method;
Expand Down Expand Up @@ -322,7 +319,8 @@ class Request extends EventEmitter {
xhr.open(method, uri, async: true);

try {
if (this.opts.containsKey('extraHeaders') && this.opts['extraHeaders']?.isNotEmpty == true) {
if (this.opts.containsKey('extraHeaders') &&
this.opts['extraHeaders']?.isNotEmpty == true) {
this.opts['extraHeaders'].forEach((k, v) {
xhr.setRequestHeader(k, v);
});
Expand All @@ -333,7 +331,7 @@ class Request extends EventEmitter {

if ('POST' == method) {
try {
xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');
xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');
} catch (e) {
// ignore
}
Expand Down Expand Up @@ -433,5 +431,4 @@ class Request extends EventEmitter {
///
/// @api public
void abort() => cleanup();

}
6 changes: 3 additions & 3 deletions lib/src/engine/transport/websocket_transport.dart
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ class WebSocketTransport extends Transport {
ws!
..onOpen.listen((_) => onOpen())
..onClose.listen((closeEvent) => onClose({
'description': "websocket connection closed",
'context': closeEvent,
}))
'description': "websocket connection closed",
'context': closeEvent,
}))
..onMessage.listen((MessageEvent evt) => onData(evt.data))
..onError.listen((e) {
onError('websocket error', e);
Expand Down
31 changes: 17 additions & 14 deletions lib/src/manager.dart
Original file line number Diff line number Diff line change
Expand Up @@ -171,18 +171,21 @@ class Manager extends EventEmitter {

Function(dynamic error) onError;
// emit `connect_error`
var errorSub = util.on(socket, 'error', onError = (error) {
_logger.fine('error');
cleanup();
readyState = 'closed';
emitReserved('error', error);
if (callback != null) {
callback({'error': 'Connection error', 'data': error});
} else {
// Only do this if there is no fn to handle the error
maybeReconnectOnOpen();
}
});
var errorSub = util.on(
socket,
'error',
onError = (error) {
_logger.fine('error');
cleanup();
readyState = 'closed';
emitReserved('error', error);
if (callback != null) {
callback({'error': 'Connection error', 'data': error});
} else {
// Only do this if there is no fn to handle the error
maybeReconnectOnOpen();
}
});

// emit `connect_timeout`
if (timeout != null) {
Expand All @@ -209,12 +212,12 @@ class Manager extends EventEmitter {
return this;
}


/// Alias for open()
///
/// @return self
/// @public
Manager connect({callback, Map? opts}) => open(callback: callback, opts: opts);
Manager connect({callback, Map? opts}) =>
open(callback: callback, opts: opts);

///
/// Called upon transport open.
Expand Down
21 changes: 12 additions & 9 deletions lib/src/socket.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import 'package:socket_io_client/src/manager.dart';
import 'package:socket_io_client/src/on.dart' as util;
import 'package:socket_io_common/src/parser/parser.dart';


const reservedEvents = <String, int>{
'connect': 1,
'connect_error': 1,
Expand Down Expand Up @@ -158,15 +157,16 @@ class Socket extends EventEmitter {
sendData.add(data);
}

if (_opts?['retries'] != null && !flags.containsKey('fromQueue') && !flags.containsKey('volatile')) {
if (_opts?['retries'] != null &&
!flags.containsKey('fromQueue') &&
!flags.containsKey('volatile')) {
if (ack != null) {
sendData.add(ack);
}
_addToQueue(sendData);
return;
}


var packet = {
'type': EVENT,
'data': sendData,
Expand All @@ -187,16 +187,14 @@ class Socket extends EventEmitter {
final discardPacket =
flags['volatile'] != null && (!isTransportWritable || !connected);
if (discardPacket) {
_logger
.fine('discard packet as the transport is not currently writable');
_logger.fine('discard packet as the transport is not currently writable');
} else if (connected) {
notifyOutgoingListeners(packet);
this.packet(packet);
} else {
sendBuffer.add(packet);
}
flags = {};

}

/// Emits an event and waits for an acknowledgement
Expand Down Expand Up @@ -245,7 +243,8 @@ class Socket extends EventEmitter {
if (packet['tryCount'] is int &&
_opts!['retries'] is int &&
(packet['tryCount'] as int) > (_opts!['retries'] as int)) {
_logger.fine("packet [${packet['id']}] is discarded after ${packet['tryCount']} tries");
_logger.fine(
"packet [${packet['id']}] is discarded after ${packet['tryCount']} tries");
_queue.removeAt(0);
if (ack != null) {
ack(err);
Expand All @@ -265,25 +264,29 @@ class Socket extends EventEmitter {
_queue.add(packet);
_drainQueue();
}

void _drainQueue([bool force = false]) {
_logger.fine("draining queue");
if (!connected || _queue.isEmpty) {
return;
}
var packet = _queue.first;
if (packet['pending'] && !force) {
_logger.fine("packet [${packet['id']}] has already been sent and is waiting for an ack");
_logger.fine(
"packet [${packet['id']}] has already been sent and is waiting for an ack");
return;
}
packet['pending'] = true;
packet['tryCount']++;
_logger.fine("sending packet [${packet['id']}] (try n°${packet['tryCount']})");
_logger
.fine("sending packet [${packet['id']}] (try n°${packet['tryCount']})");
flags = packet['flags'];
var args = packet['args'] as List;
final evt = args.removeAt(0);
final ack = args.last is Function ? args.removeLast() : null;
emitWithAck(evt, args, ack: ack);
}

void _registerAckCallback(int id, Function ack) {
final sid = '$id';
final timeout = flags['timeout'] ?? _opts?['ackTimeout'];
Expand Down
12 changes: 8 additions & 4 deletions web/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@ import 'package:socket_io_common/socket_io_common.dart';
void main() {
var socket = io.io(
'http://localhost:3000',
io.OptionBuilder().setTransports(['polling'])
.setParser(io.ParserOptions(encoder: () => MyEncoder(), decoder: () => MyDecoder()))
// .disableAutoConnect()
io.OptionBuilder()
.setTransports(['polling'])
.setParser(io.ParserOptions(
encoder: () => MyEncoder(), decoder: () => MyDecoder()))
// .disableAutoConnect()
.build());

// socket.connect();
Expand All @@ -37,17 +39,19 @@ void main() {
socket.on('disconnect', (_) => print('disconnect'));
socket.on('fromServer', (_) => print(_));
}

class MyEncoder extends Encoder {
@override
List<Object?> encode(Object? obj) {
print('MyEncoder: $obj');
return super.encode(obj);
}
}

class MyDecoder extends Decoder {
@override
add(obj) {
print('MyDecoder: $obj');
return super.add(obj);
}
}
}

0 comments on commit 577c55d

Please sign in to comment.