cc-haxe/src/kernel/net/Package.hx

58 lines
1.1 KiB
Haxe
Raw Normal View History

2021-12-20 01:55:30 +01:00
package kernel.net;
2022-02-24 02:05:43 +01:00
typedef NetworkID = Int;
2021-12-20 01:55:30 +01:00
enum PackageTypes {
2022-02-21 15:35:37 +01:00
Data(proto:String);
DataNoResponse(proto:String);
2021-12-20 01:55:30 +01:00
Response;
2022-02-24 02:05:43 +01:00
RouteDiscover(reachableIDs: Array<NetworkID>);
RouteDiscoverResponse(reachableIDs: Array<NetworkID>);
2021-12-20 01:55:30 +01:00
}
/**
Representing a network package.
**/
@:structInit class Package {
2022-02-24 02:05:43 +01:00
public final fromID:NetworkID;
public final toID:NetworkID;
2021-12-20 01:55:30 +01:00
public final msgID:Int;
public final type:PackageTypes;
public final data:Dynamic;
/**
Parse package from an `modem_message` event.
**/
2022-02-21 15:35:37 +01:00
public static function fromEvent(params:Array<Dynamic>):Package {
2021-12-20 01:55:30 +01:00
var payload = params[4];
return {
fromID: params[3],
toID: params[2],
msgID: payload.msgID,
type: payload.type,
data: payload.data,
};
}
/**
Create package that can be used as a response.
**/
2022-02-21 15:35:37 +01:00
public function createResponse(newData:Dynamic):Package {
2021-12-20 01:55:30 +01:00
return {
toID: fromID,
fromID: toID,
msgID: msgID,
type: Response,
data: newData
};
}
/**
Wrapper for `Net.instance.respondTo`.
**/
2022-02-21 15:35:37 +01:00
public function respond(data:Dynamic) {
Net.instance.respondTo(this, data);
2021-12-20 01:55:30 +01:00
}
2022-02-21 15:35:37 +01:00
}