File tree Expand file tree Collapse file tree 4 files changed +49
-1
lines changed Expand file tree Collapse file tree 4 files changed +49
-1
lines changed Original file line number Diff line number Diff line change
1
+ export "src/serializers/cbor.dart" show CBORSerializer;
1
2
export "src/serializers/json.dart" show JsonSerializer;
Original file line number Diff line number Diff line change
1
+ import "dart:typed_data" ;
2
+
3
+ import "package:cbor/simple.dart" ;
4
+ import "package:wampproto/src/messages/message.dart" ;
5
+ import "package:wampproto/src/serializers/serializer.dart" ;
6
+
7
+ class CBORSerializer implements Serializer {
8
+ @override
9
+ Uint8List serialize (Message message) {
10
+ final encoded = cbor.encode (message.marshal ());
11
+ return Uint8List .fromList (encoded);
12
+ }
13
+
14
+ @override
15
+ Message deserialize (Uint8List message) {
16
+ final decoded = cbor.decode (message);
17
+ if (decoded is ! List ) {
18
+ throw "bad type" ;
19
+ }
20
+
21
+ return toMessage (decoded);
22
+ }
23
+ }
Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ environment:
8
8
9
9
# Add regular dependencies here.
10
10
dependencies :
11
- # path : ^1.8 .0
11
+ cbor : ^6.2 .0
12
12
13
13
dev_dependencies :
14
14
lints : ^3.0.0
Original file line number Diff line number Diff line change
1
+ import "package:test/test.dart" ;
2
+ import "package:wampproto/messages.dart" ;
3
+ import "package:wampproto/serializers.dart" ;
4
+
5
+ void main () {
6
+ test ("test serialize and deserialize" , testCBOR);
7
+ }
8
+
9
+ void testCBOR () {
10
+ var hello = Hello .parse ([1 , "realm1" ]);
11
+
12
+ var serializer = CBORSerializer ();
13
+ var data = serializer.serialize (hello);
14
+
15
+ var obj = serializer.deserialize (data);
16
+ if (obj.messageType () != 1 ) {
17
+ fail ("message" );
18
+ }
19
+
20
+ var deserialized = obj as Hello ;
21
+
22
+ expect (hello.realm, deserialized.realm);
23
+ expect (hello.messageType (), deserialized.messageType ());
24
+ }
You can’t perform that action at this time.
0 commit comments