diff --git a/6.ts b/6.ts index 651fc82..c1bb5cb 100644 --- a/6.ts +++ b/6.ts @@ -2,6 +2,30 @@ import { BufReader } from "https://deno.land/std@0.157.0/io/buffer.ts"; const PORT = 5588; +type Road = number; +type Dispatcher = Road[]; +type Location = number; +type SpeedLimit = number; +type Timestamp = number; +type Plate = string; +type Car = Plate; + +type U8 = number; +type U16 = number; +type U32 = number; + +interface Camera { + road: Road; + location: Location; + speedLimit: SpeedLimit; +} + +interface Report { + camera: Camera; + car: Car; + timestamp: Timestamp; +} + // const tEnc = new TextEncoder(); console.log(`Starting TCP listener on on 0.0.0.0:${PORT}`); @@ -19,11 +43,32 @@ function chatSession(conn: Deno.Conn) { serve(conn).catch((e) => e).finally(closeOnDisconnect); } +enum MessageType { + ERROR = 0x10, // Server -> Client + PLATE = 0x20, // Client -> Server + TICKET = 0x21, // Server -> Client +} + +type ErrorMessage = [ + string, // msg +]; + +type PlateMessage = [ + string, // plate + U32, // timestamp +]; + +interface TicketMessage { +} + +type Message = ErrorMessage | PlateMessage; + async function serve(conn: Deno.Conn) { const reader = new BufReader(conn); const type = await reader.peek(1); if (!type) throw new Error("failed to peek start of packet"); - console.log(type); + console.log({ type }, 0x64); + // TODO: loop... } for await (const conn of Deno.listen({ port: PORT })) {