aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/messages122
1 files changed, 0 insertions, 122 deletions
diff --git a/doc/messages b/doc/messages
deleted file mode 100644
index b9bd825..0000000
--- a/doc/messages
+++ /dev/null
@@ -1,122 +0,0 @@
-Messages in mds are text based, in UTF-8, with LF for
-line separation.
-
-Each headers is contained to exactly one line.
-
-All header names are in sentence case.
-
-A colon followed by a blank space separates the header
-name from its associated value.
-
-One blank line separates the headers from the payload.
-
-If the message does not have a payload it most still
-have a blank line after the headers. It marks the end
-of the message.
-
-The payload of the message may be in binary format.
-
-A message with a payload must have a ‘Length’ header
-that specifies the byte length of the message. Their
-most not an additional LF, or any other symbol, after
-the payload that is not inside the range specified
-by the ‘Length’ header.
-
-
-All clients have an ID that consists of two unsigned
-32-bit integers. When a client is created its ID is
-automatically 0:0, this is a special ID: it is the
-only non-unique ID and client with this ID cannot
-get responses. It can however ask for interceptions,
-which it would receive. To get a real ID it must
-ask the master server (which is the only server that
-can communicate with it when it does not have an ID)
-for an ID, this can only be done when it does not
-have an ID. To do this, it sends an message with
-two headers and no payload. One of the headers is
-‘Command’ and its value should be ‘assign-id’,
-the other header is ‘Message ID’ and its value is
-an unsigned 32-bit integer of the index of the
-message starting at 0. In response the server sends
-a message with two headers and no payload, one of
-the headers is ‘ID assignment’ and its value is
-two unsigned 32-bit integers joined together
-with a colon, for example ‘0:1’, the other header
-is ‘In response to’ and its value is the message
-ID that the client sent.
-
-
-When a client closes the server multicasts a single
-header message with no payload. The header is ‘Client
-closed’ with the client's ID. Be aware that the ID
-may be 0:0, which is not unique.
-
-
-Multicasts are sent to clients that have ask for
-the type of message this is being sent. This technique
-is also used to intercept message or receive message
-as part of a service that a server provides. Servers
-that implement the ability to connect from another
-computer are encouraged to reject this type of message
-if it could be used for spying. To tell the server
-that you want to intercept a type of message the client
-sends a message with the header and value
-‘Command: intercept’. It can also specify a priority
-that is a signed 64-bit integer, the default value is
-zero. This is done by using the header ‘Priority’. A
-higher priority means that the message is sent earlier.
-If the client wishes to be able to modify the message
-it most have the header ‘Modifying’ with the value ‘yes’.
-If the client wishes to receive all messages it should
-not include a payload, otherwise it which send a
-LF delimited list of headers that it is interested in.
-In this list it is possible to limit to exact values
-byte appending a colon and blank space (‘: ’) followed
-by the value to the header name. You can also request
-that the interception stops by including the header
-and value ‘Stop: yes’.
-
-For ‘Command: intercept’ and all other messages, the
-client should include the ‘Message ID’ header.
-
-A client that as requested to be able to modify
-messages will receive the header ‘Modify ID’. This
-header may be include even for clients that has
-not requested to be able to modify the message.
-The ID is only necessary unique for the message
-and does not necessary increase when the message
-is modified. The client most respond if it has
-requested to be able to modify the message. This
-is done by sending the header ‘Modify’ and the
-header ‘Modify ID’ with the same value as for the
-message is is responding to. The value of the
-‘Modify’ header should be ‘no’ if the message
-is not modified. If the message should be modify
-it the value of the ‘Modify’ header should be
-‘yes’ and the payload should be the new message
-with all the, possibly modified, headers the new
-payload. A server may also choose to consume a
-message message, this is done by responding
-without a payload and include ‘Modify: yes’.
-Once a message is consumed it will not be sent
-to any additional servers.
-
-
-Unless a client's ID is 0:0 (allowed even if it is
-0:0) it should always include the header ‘Client ID’
-and its ID as the headers value. Otherwise it is
-assumed that the client's ID is 0:0.
-
-
-Clients automatically receives messages that is
-addressed to them with priority zero with a mark that
-it will not modify the message. To address a message
-to client include the header ‘To’ with the client's
-ID [that the message is addressed to] as the value.
-Furthermore, client's automatically receives messages
-that include the header ‘To: all’ — a broadcast. Since
-servers are clients too they will also receive these
-messages; there are two exceptions, the kernel and
-the master server, neither of which are servers proper,
-but rather a dual-layer kernel.
-