Skip to content

Commit 1875f59

Browse files
committed
chore: Use SentObject instead of map.
1 parent bc0a21a commit 1875f59

File tree

1 file changed

+42
-32
lines changed

1 file changed

+42
-32
lines changed

lib/src/peer.dart

Lines changed: 42 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,22 @@ export 'transports/NativeTransport.dart'
99

1010
final logger = new Logger('Peer');
1111

12+
class SentObject {
13+
final int id;
14+
final String method;
15+
final Function(dynamic) resolve;
16+
final Function(dynamic) reject;
17+
final Timer timer;
18+
final Function() close;
19+
SentObject(
20+
{required this.id,
21+
required this.method,
22+
required this.resolve,
23+
required this.reject,
24+
required this.timer,
25+
required this.close});
26+
}
27+
1228
class Peer extends EnhancedEventEmitter {
1329
// Closed flag.
1430
bool _closed = false;
@@ -20,7 +36,7 @@ class Peer extends EnhancedEventEmitter {
2036
dynamic _data = {};
2137

2238
// Map of pending sent request objects indexed by request id.
23-
var _sents = Map<String, dynamic>();
39+
var _sents = Map<String, SentObject>();
2440

2541
// Transport.
2642
late TransportInterface _transport;
@@ -72,33 +88,29 @@ class Peer extends EnhancedEventEmitter {
7288
await this._transport.send(request);
7389

7490
int timeout = (1500 * (15 + (0.1 * this._sents.length))).toInt();
75-
final sent = {
76-
'id': request['id'],
77-
'method': request['method'],
78-
'resolve': (data2) {
79-
final sent = _sents.remove(requestId);
80-
if (sent == null) return;
81-
sent['timer'].cancel();
82-
completer.complete(data2);
83-
},
84-
'reject': (error) {
85-
final sent = _sents.remove(requestId);
86-
if (sent == null) return;
87-
sent['timer'].cancel();
88-
completer.completeError(error);
89-
},
90-
'timer': new Timer.periodic(new Duration(milliseconds: timeout),
91-
(Timer timer) {
92-
if (this._sents.remove(requestId) == null) return;
93-
94-
completer.completeError('request timeout');
95-
}),
96-
'close': () {
97-
var handler = _sents[requestId];
98-
handler['timer'].cancel();
99-
completer.completeError('peer closed');
100-
}
101-
};
91+
final sent = SentObject(
92+
id: request['id'],
93+
method: request['method'],
94+
resolve: (data2) {
95+
final sent = _sents.remove(requestId);
96+
sent?.timer.cancel();
97+
completer.complete(data2);
98+
},
99+
reject: (error) {
100+
final sent = _sents.remove(requestId);
101+
sent?.timer.cancel();
102+
completer.completeError(error);
103+
},
104+
timer: new Timer.periodic(new Duration(milliseconds: timeout),
105+
(Timer timer) {
106+
if (this._sents.remove(requestId) == null) return;
107+
completer.completeError('request timeout');
108+
}),
109+
close: () {
110+
final sent = _sents[requestId];
111+
sent?.timer.cancel();
112+
completer.completeError('peer closed');
113+
});
102114

103115
_sents[requestId] = sent;
104116
return completer.future;
@@ -215,15 +227,13 @@ class Peer extends EnhancedEventEmitter {
215227
}
216228

217229
if (response['ok'] != null && response['ok'] == true) {
218-
var resolve = sent['resolve'];
219-
resolve(response['data']);
230+
sent.resolve(response['data']);
220231
} else {
221232
var error = {
222233
'code': response['errorCode'] ?? 500,
223234
'error': response['errorReason'] ?? ''
224235
};
225-
var reject = sent['reject'];
226-
reject(error);
236+
sent.reject(error);
227237
}
228238
}
229239

0 commit comments

Comments
 (0)