Skip to content

Commit 0af9d5f

Browse files
committed
Resolve #33 Null safety
1 parent 898e6be commit 0af9d5f

17 files changed

+219
-233
lines changed

CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
## 1.0.0
2+
3+
**New Feature:**
4+
5+
* [#33](https://github.com/rikulo/socket.io-dart/issues/33) Null safety
6+
7+
18
## 0.9.4
29

310
**Bug Fix:**

lib/src/adapter/adapter.dart

+26-31
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ import 'package:socket_io/src/util/event_emitter.dart';
1515

1616
abstract class Adapter {
1717
Map nsps = {};
18-
Map<String, _Room> rooms;
19-
Map<String, Map> sids;
18+
Map<String, _Room> rooms = {};
19+
Map<String, Map> sids = {};
2020

2121
void add(String id, String room, [dynamic Function([dynamic]) fn]);
2222
void del(String id, String room, [dynamic Function([dynamic]) fn]);
2323
void delAll(String id, [dynamic Function([dynamic]) fn]);
2424
void broadcast(Map packet, [Map opts]);
25-
void clients(List rooms, [dynamic Function([dynamic]) fn]);
25+
void clients([List<String> rooms, dynamic Function([dynamic]) fn]);
2626
void clientRooms(String id, [dynamic Function(dynamic, [dynamic]) fn]);
2727

2828
static Adapter newInstance(String key, Namespace nsp) {
@@ -37,15 +37,15 @@ class _MemoryStoreAdapter extends EventEmitter implements Adapter {
3737
@override
3838
Map nsps = {};
3939
@override
40-
Map<String, _Room> rooms;
40+
Map<String, _Room> rooms = {};
41+
4142
@override
42-
Map<String, Map> sids;
43-
Encoder encoder;
44-
Namespace nsp;
45-
_MemoryStoreAdapter(nsp) {
43+
Map<String, Map> sids = {};
44+
late Encoder encoder;
45+
late Namespace nsp;
46+
47+
_MemoryStoreAdapter(Namespace nsp) {
4648
this.nsp = nsp;
47-
rooms = {};
48-
sids = {};
4949
encoder = nsp.server.encoder;
5050
}
5151

@@ -57,11 +57,11 @@ class _MemoryStoreAdapter extends EventEmitter implements Adapter {
5757
/// @api public
5858
5959
@override
60-
void add(String id, String room, [dynamic Function([dynamic]) fn]) {
60+
void add(String id, String room, [dynamic Function([dynamic])? fn]) {
6161
sids[id] = sids[id] ?? {};
62-
sids[id][room] = true;
62+
sids[id]![room] = true;
6363
rooms[room] = rooms[room] ?? _Room();
64-
rooms[room].add(id);
64+
rooms[room]!.add(id);
6565
if (fn != null) scheduleMicrotask(() => fn(null));
6666
}
6767

@@ -72,12 +72,12 @@ class _MemoryStoreAdapter extends EventEmitter implements Adapter {
7272
/// @param {Function} callback
7373
/// @api public
7474
@override
75-
void del(String id, String room, [dynamic Function([dynamic]) fn]) {
75+
void del(String id, String room, [dynamic Function([dynamic])? fn]) {
7676
sids[id] = sids[id] ?? {};
77-
sids[id].remove(room);
77+
sids[id]!.remove(room);
7878
if (rooms.containsKey(room)) {
79-
rooms[room].del(id);
80-
if (rooms[room].length == 0) rooms.remove(room);
79+
rooms[room]!.del(id);
80+
if (rooms[room]!.length == 0) rooms.remove(room);
8181
}
8282

8383
if (fn != null) scheduleMicrotask(() => fn(null));
@@ -89,13 +89,13 @@ class _MemoryStoreAdapter extends EventEmitter implements Adapter {
8989
/// @param {Function} callback
9090
/// @api public
9191
@override
92-
void delAll(String id, [dynamic Function([dynamic]) fn]) {
92+
void delAll(String id, [dynamic Function([dynamic])? fn]) {
9393
var rooms = sids[id];
9494
if (rooms != null) {
9595
for (var room in rooms.keys) {
9696
if (this.rooms.containsKey(room)) {
97-
this.rooms[room].del(id);
98-
if (this.rooms[room].length == 0) this.rooms.remove(room);
97+
this.rooms[room]!.del(id);
98+
if (this.rooms[room]!.length == 0) this.rooms.remove(room);
9999
}
100100
}
101101
}
@@ -114,7 +114,7 @@ class _MemoryStoreAdapter extends EventEmitter implements Adapter {
114114
/// @param {Object} packet object
115115
/// @api public
116116
@override
117-
void broadcast(Map packet, [Map opts]) {
117+
void broadcast(Map packet, [Map? opts]) {
118118
opts = opts ?? {};
119119
List rooms = opts['rooms'] ?? [];
120120
List except = opts['except'] ?? [];
@@ -161,9 +161,8 @@ class _MemoryStoreAdapter extends EventEmitter implements Adapter {
161161
/// @param {Function} callback
162162
/// @api public
163163
@override
164-
void clients(List rooms, [dynamic Function([dynamic]) fn]) {
165-
rooms = rooms ?? [];
166-
164+
void clients(
165+
[List<String> rooms = const [], dynamic Function([dynamic])? fn]) {
167166
var ids = {};
168167
var sids = [];
169168
var socket;
@@ -200,7 +199,7 @@ class _MemoryStoreAdapter extends EventEmitter implements Adapter {
200199
/// @param {Function} callback
201200
/// @api public
202201
@override
203-
void clientRooms(String id, [dynamic Function(dynamic, [dynamic]) fn]) {
202+
void clientRooms(String id, [dynamic Function(dynamic, [dynamic])? fn]) {
204203
var rooms = sids[id];
205204
if (fn != null) scheduleMicrotask(() => fn(null, rooms?.keys));
206205
}
@@ -210,12 +209,8 @@ class _MemoryStoreAdapter extends EventEmitter implements Adapter {
210209
///
211210
/// @api private
212211
class _Room {
213-
Map<String, bool> sockets;
214-
int length;
215-
_Room() {
216-
sockets = {};
217-
length = 0;
218-
}
212+
Map<String, bool> sockets = {};
213+
int length = 0;
219214

220215
/// Adds a socket to a room.
221216
///

lib/src/client.dart

+9-10
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ class Client {
1919
Socket conn;
2020
dynamic id;
2121
dynamic request;
22-
Encoder encoder;
23-
Decoder decoder;
22+
Encoder encoder = Encoder();
23+
Decoder decoder = Decoder();
2424
List sockets = [];
2525
Map nsps = {};
2626
List<String> connectBuffer = [];
@@ -31,11 +31,9 @@ class Client {
3131
/// @param {Server} server instance
3232
/// @param {Socket} connection
3333
/// @api private
34-
Client(this.server, this.conn) {
35-
encoder = Encoder();
36-
decoder = Decoder();
37-
id = conn.id;
38-
request = conn.connect.request;
34+
Client(this.server, this.conn)
35+
: id = conn.id,
36+
request = conn.connect.request {
3937
setup();
4038
}
4139

@@ -125,12 +123,13 @@ class Client {
125123
/// @param {Object} packet object
126124
/// @param {Object} options
127125
/// @api private
128-
void packet(packet, [Map opts]) {
126+
void packet(packet, [Map? opts]) {
129127
var self = this;
130-
opts = opts ?? {};
128+
opts ??= {};
131129
// this writes to the actual connection
132130
void writeToEngine(encodedPackets) {
133-
if (opts['volatile'] != null && !self.conn.transport.writable) return;
131+
if (opts!['volatile'] != null && self.conn.transport.writable != true)
132+
return;
134133
for (var i = 0; i < encodedPackets.length; i++) {
135134
self.conn.write(encodedPackets[i], {'compress': opts['compress']});
136135
}

lib/src/engine/connect.dart

+8-8
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ import 'dart:async';
1313
import 'dart:io';
1414

1515
class SocketConnect extends HttpConnectWrapper {
16-
WebSocket _socket;
17-
Completer _done;
18-
bool _completed;
16+
WebSocket? _socket;
17+
Completer? _done;
18+
bool? _completed;
1919
SocketConnect(HttpConnect origin) : super(origin);
2020

2121
SocketConnect.fromWebSocket(HttpConnect origin, WebSocket socket)
@@ -25,26 +25,26 @@ class SocketConnect extends HttpConnectWrapper {
2525

2626
bool isUpgradeRequest() => _socket != null;
2727

28-
WebSocket get websocket => _socket;
28+
WebSocket? get websocket => _socket;
2929

3030
Future get done {
3131
if (_completed == true) {
3232
return Future.value('done');
3333
}
3434
if (_socket != null) {
35-
return _socket.done;
35+
return _socket!.done;
3636
} else {
3737
_done = Completer();
38-
return _done.future;
38+
return _done!.future;
3939
}
4040
}
4141

4242
/// Closes the current connection.
4343
void close() {
4444
if (_done != null) {
45-
_done.complete('done');
45+
_done!.complete('done');
4646
} else if (_socket != null) {
47-
_socket.close();
47+
_socket!.close();
4848
} else {
4949
_completed = true;
5050
}

lib/src/engine/engine.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import 'package:socket_io/src/engine/server.dart';
1212
import 'package:socket_io/src/util/event_emitter.dart';
1313

1414
class Engine extends EventEmitter {
15-
static Engine attach(server, [Map options]) {
15+
static Engine attach(server, [Map? options]) {
1616
var engine = Server(options);
1717
engine.attachTo(server, options);
1818
return engine;

0 commit comments

Comments
 (0)