From 6584be3eddfc08e638d658026ff654883818e970 Mon Sep 17 00:00:00 2001 From: Sven Robertz <sven@cs.lth.se> Date: Wed, 21 Mar 2012 11:15:42 +0100 Subject: [PATCH] started sketching NRT protocol --- lib/c/experimental/throttlenet/throttlenet.lc | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 lib/c/experimental/throttlenet/throttlenet.lc diff --git a/lib/c/experimental/throttlenet/throttlenet.lc b/lib/c/experimental/throttlenet/throttlenet.lc new file mode 100644 index 0000000..486c51f --- /dev/null +++ b/lib/c/experimental/throttlenet/throttlenet.lc @@ -0,0 +1,84 @@ +typedef short number_t; // placeholder for protocol buffers like encoding +typedef byte[6] eth_addr; + +// *** Service registration, lookup, and channel allocation + +typedef struct { + string creatorId; + string svcId; + int version; +} serviceID; // Should probably be a PalCom-like struct + +typedef struct { + string key; + byte value[-]; +} property_t; // used for type info, grounding, etc. + +typedef struct { + string name; + property_t properties[-]; + param_t params[-]; +} command_t; + +typedef struct { + string name; + property_t properties[-]; +} param_t; + +typedef struct { + servicID svcID; + string name; + command_t commands[-]; + byte data_description[-]; +} serviceDescription; // d:o PalCom + +typedef struct { + eth_addr device; // or more generic, as in PalCom? + serviceID svcID; + number_t instanceID; + string instance_name; +} service_instance; + +sample struct { + service_instance svc; + number_t chnID; // the channel to use for connecting to the service +} service_register; + +sample boolean ack; + +sample struct { +} services_query; + +sample struct { + service_instance svcs[-] +} services_list; + +sample struct { + service_instance svc; + number_t bytes_per_period; + float periodtime; // in seconds // or number_t microseconds? + // importance? +} service_allocate_channel; // client -> GlobeThrottle to request connection + +sample struct { + // requesting service instance? + number_t chnId; // the channel to send the connect message on +} service_channel_ACK; + +sample struct { + float max_utilization; + // min period? +} service_channel_NACK; + + +// *** service to service connection negotiation + +typedef struct { + number_t sender_chnId; // The chnID at the sender's side that will receive the response, and subsequent traffic; +} connect_t; + + +sample connect_t connect_request; +sample connect_t connect_response; + + -- GitLab