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

59 lines
1.2 KiB
Haxe
Raw Normal View History

2021-12-20 01:55:30 +01:00
package kernel.net;
2023-03-28 00:54:47 +02:00
import lib.Pos3;
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 19:47:27 +01:00
RouteDiscover(reachableIDs: Array<{id:NetworkID,cost:Int}>);
RouteDiscoverResponse(reachableIDs: Array<{id:NetworkID,cost:Int}>);
2022-03-01 17:28:15 +01:00
RouteDiscoverUpdate(reachableIDs: Array<{id:NetworkID,cost:Int}>);
2023-03-28 00:54:47 +02:00
GPSResponse(pos:Pos3);
GPSRequest();
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;
2022-03-01 16:59:53 +01:00
public var ttl: Int;
2021-12-20 01:55:30 +01:00
2023-03-28 00:54:47 +02:00
public function new(fromID:NetworkID, toID:NetworkID, msgID:Int, type:PackageTypes, data:Dynamic, ttl:Int) {
this.fromID = fromID;
this.toID = toID;
this.msgID = msgID;
this.type = type;
this.data = data;
this.ttl = ttl;
}
2021-12-20 01:55:30 +01:00
/**
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,
2022-03-01 16:59:53 +01:00
data: newData,
ttl: Net.DEFAULT_TTL,
2021-12-20 01:55:30 +01:00
};
}
/**
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
}