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
|
|
|
}
|