package kernel.net; import lib.Pos3; typedef NetworkID = Int; enum PackageTypes { Data(proto:String); DataNoResponse(proto:String); Response; RouteDiscover(reachableIDs: Array<{id:NetworkID,cost:Int}>); RouteDiscoverResponse(reachableIDs: Array<{id:NetworkID,cost:Int}>); RouteDiscoverUpdate(reachableIDs: Array<{id:NetworkID,cost:Int}>); GPSResponse(pos:Pos3); GPSRequest(); } /** Representing a network package. **/ @:structInit class Package { public final fromID:NetworkID; public final toID:NetworkID; public final msgID:Int; public final type:PackageTypes; public final data:Dynamic; public var ttl: Int; 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; } /** Create package that can be used as a response. **/ public function createResponse(newData:Dynamic):Package { return { toID: fromID, fromID: toID, msgID: msgID, type: Response, data: newData, ttl: Net.DEFAULT_TTL, }; } /** Wrapper for `Net.instance.respondTo`. **/ public function respond(data:Dynamic) { Net.instance.respondTo(this, data); } }