aboutsummaryrefslogtreecommitdiffstats
path: root/README
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2017-10-24 18:36:51 +0200
committerMattias Andrée <maandree@kth.se>2017-10-24 18:36:51 +0200
commit9d1cde47a22d3f43e07a807d6dd183d3f768137d (patch)
treeb50b050446c50d793137eabacdf63f874735fd33 /README
parentUse / instead of . (diff)
downloadsbus-9d1cde47a22d3f43e07a807d6dd183d3f768137d.tar.gz
sbus-9d1cde47a22d3f43e07a807d6dd183d3f768137d.tar.bz2
sbus-9d1cde47a22d3f43e07a807d6dd183d3f768137d.tar.xz
Add contol messages for flood control
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'README')
-rw-r--r--README59
1 files changed, 59 insertions, 0 deletions
diff --git a/README b/README
index eef3a3d..2fe8419 100644
--- a/README
+++ b/README
@@ -133,3 +133,62 @@ Secret messages:
B: Send B's credentials with routing key private to A.
A: Send a random message with routing key private to B.
B: Send back the message with routing key private to A.
+
+Flood control:
+ The following control messages can be sent to the server to
+ choose the server behaviour when messages cannot be delivered
+ without blocking. All control messages are optional and server
+ may choose to ignore them at any time, even if previously
+ honoured. Most recently sent control message that precedence.
+
+ ^CMSG blocking/soft/queue\(\x00.*\)*$
+
+ Delivering is preferable, the server should queue up
+ message that cannot be sent.
+
+ ^CMSG blocking/soft/discard\(\x00.*\)*$
+
+ Delivering is unimportant, the server should discard
+ message that cannot be sent.
+
+ ^CMSG blocking/soft/block\(\x00.*\)*$
+
+ Delivering is important, the server may block communication
+ to guarantee that messages are delivered.
+
+ ^CMSG blocking/soft/error\(\x00.*\)*$
+
+ The server may treat a client as misbehaving if message
+ cannot be sent.
+
+ ^CMSG blocking/hard/discard\(\x00.*\)*$
+
+ If the server has queued up too many message it should
+ start discarding new message instead of queuing them.
+
+ ^CMSG blocking/hard/block\(\x00.*\)*$
+
+ If the server has queued up too many message it should
+ start blocking communication until it can start queuing
+ messages again.
+
+ ^CMSG blocking/hard/error\(\x00.*\)*$
+
+ If the server has queued up too many message it should
+ start treating clients that are blocking as misbehaving.
+
+ ^CMSG order/queue\(\x00.*\)*$
+
+ If the client is blocking it is preferable that messages
+ are sent in order.
+
+ ^CMSG order/stack\(\x00.*\)*$
+
+ If the client is blocking it is preferable that messages
+ are sent in reverse order.
+
+ ^CMSG order/random\(\x00.*\)*$
+
+ If the client is blocking it is preferable that messages
+ are sent in such order that memory is freed up as fast
+ as possible.