Skip to content

Commit 8bb1802

Browse files
author
Mad Sheogorath
committed
ReadMe updated.
1 parent 45f255f commit 8bb1802

File tree

2 files changed

+25
-29
lines changed

2 files changed

+25
-29
lines changed

CHANGELOG.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
## v1.0.0
2-
32
* Enums and Types can be referenced from another manifest files.
43
* Enum declaration implemented.
54
* Type (nested object) declaration implemented.

README.md

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
## What is PackMe
2-
PackMe is a lightweight library for packing your data into binary buffer (presumably in order to be sent over tcp connection) and unpacking it back to class objects described in a simple way via JSON manifest files.
2+
PackMe is a lightweight library for packing your data into binary buffer (presumably in order to be sent over TCP connection) and unpacking it back to class objects described in a simple way via JSON manifest files.
33

44
## It is Fast
55
Spoiler alert! ~500k pack/unpack cycles per second for data of average size and complexity. Of course it depends on system configuration :)
66

7-
Since PackMe generates .dart classes, there is no need for any resource demanding serialization/deserialization process. No intermediate steps involved, every class has it's own efficient methods to quickly put all data to Uint8List buffer and extract it. Comparing to popular solutions it's performance is similar to FlatBuffers and greatly outperforms Proto Buffers.
7+
Since PackMe generates .mjs classes, there is no need for any resource demanding serialization/deserialization process. No intermediate steps involved, every class has it's own efficient methods to quickly put all data to Uint8List buffer and extract it. Comparing to popular solutions it's performance is similar to FlatBuffers and greatly outperforms Proto Buffers.
88

99
## It is Simple
1010
No special file formats (like for FlatBuffers or Proto Buffers manifest files), just use JSON. Objects, types and messages declarations are very simple and intuitive.
@@ -27,52 +27,49 @@ Here's a simple manifest.json file (located in packme directory) for some hypoth
2727
]
2828
}
2929
```
30-
Generate dart files:
30+
Generate javascript files:
3131
```bash
32-
node compile.js packme generated
32+
# Usage: compiler.mjs <json_manifests_dir> <generated_classes_dir>
33+
node compiler.mjs packme generated
3334
```
3435
Using on client side:
35-
```dart
36-
import 'generated/manifest.generated.js';
37-
import 'package:packme/packme.dart';
36+
```javascript
37+
import {manifestMessageFactory, GetUserRequest, GetUserResponse} from 'generated/manifest.generated.mjs';
38+
import {PackMe, PackMeMessage} from 'packme';
3839

39-
...
40+
// ... whatever code goes here
4041

41-
PackMe packMe = PackMe();
42+
let packMe = new PackMe();
4243
packMe.register(manifestMessageFactory); // Required by PackMe to create class instances while unpacking messages
4344

44-
GetUserRequest request = GetUserRequest(id: 'a7db84cc2ef5012a6498bc64334ffa7d');
45+
let request = GetUserRequest('a7db84cc2ef5012a6498bc64334ffa7d');
4546
socket.send(packMe.pack(request)); // Some socket implementation
4647

47-
socket.listen((Uint8List data) {
48-
final PackMeMessage? message = packMe.unpack(data);
49-
if (message is GetUserResponse) {
50-
print('He is awesome: ${message.firstName} ${message.lastName}, ${message.age} y.o.');
48+
socket.listen((/** Uint8Array */ data) => {
49+
let message = packMe.unpack(data);
50+
if (message instanceof GetUserResponse) {
51+
print(`He is awesome: ${message.firstName} ${message.lastName}, ${message.age} y.o.`);
5152
}
5253
});
5354
```
5455
Using on server side:
55-
```dart
56-
import 'generated/manifest.generated.dart';
57-
import 'package:packme/packme.dart';
56+
```node
57+
import {manifestMessageFactory, GetUserRequest, GetUserResponse} from 'generated/manifest.generated.mjs';
58+
import {PackMe, PackMeMessage} from 'packme';
5859

59-
...
60+
// ... whatever code goes here
6061

61-
PackMe packMe = PackMe();
62+
let packMe = new PackMe();
6263
packMe.register(manifestMessageFactory); // Required by PackMe to create class instances while unpacking messages
6364

64-
server.listen((Uint8List data, SomeSocket socket) { // Some server implementation
65-
final PackMeMessage? message = packMe.unpack(data);
66-
if (message is GetUserRequest) {
67-
GetUserResponse response = GetUserResponse(
68-
firstName: 'Peter',
69-
lastName: 'Hollens',
70-
age: '39'
71-
);
65+
server.listen((/** Uint8Array */ data, /** SomeSocket */ socket) => { // Some server implementation
66+
let message = packMe.unpack(data);
67+
if (message instanceof GetUserRequest) {
68+
let response = GetUserResponse('Peter', 'Hollens', 39);
7269
socket.send(packMe.pack(response));
7370
}
7471
});
7572
```
7673

7774
## Supported platforms
78-
Now it's only for Dart. Will it be cross platform? Well it depends... If developers will find this package useful then it will be implemented for JavaScript and C++ I guess.
75+
Now it's only for Dart and JavaScript. Will there be more platforms? Well it depends... If developers will find this package useful then it will be implemented for C++ I guess.

0 commit comments

Comments
 (0)