doc: revert arrows chars in relay protocol

master
Sébastien Helleu 2020-04-14 22:16:48 +02:00
parent 9fa3609c85
commit 0c7d7c3fdc
3 changed files with 105 additions and 105 deletions

View File

@ -32,11 +32,11 @@ The _clients_ are connected to _relay_ like shown in this diagram:
.... ....
┌──────────┐ Workstation ┌──────────┐ Workstation
┌────────┐ ┌───┤ client 1 │ (Linux, Windows, ┌────────┐ ┌───┤ client 1 │ (Linux, Windows,
│ irc │──┐ ╔═══════════╤═══════╗ │ └──────────┘ BSD, macOS ...) │ irc │──┐ ╔═══════════╤═══════╗ │ └──────────┘ BSD, macOS ...)
└────────┘ └──╢ │ ║───┘ ┌──────────┐ └────────┘ └──╢ │ ║───┘ ┌──────────┐
...... ║ WeeChat │ Relay ║───────┤ client 2 │ Mobile device ...... ║ WeeChat │ Relay ║───────┤ client 2 │ Mobile device
┌────────┐ ┌──╢ │ ║───┐ └──────────┘ (Android, iPhone ...) ┌────────┐ ┌──╢ │ ║───┐ └──────────┘ (Android, iPhone ...)
│ jabber │──┘ ╚═══════════╧═══════╝ │ ...... │ jabber │──┘ ╚═══════════╧═══════╝ │ ......
└────────┘ │ ┌──────────┐ └────────┘ │ ┌──────────┐
...... └───┤ client N │ Other devices ...... └───┤ client N │ Other devices
└──────────┘ └──────────┘
@ -1510,7 +1510,7 @@ Example:
.... ....
┌────┐ ┌────┐
│ 41 │ ──── 65 (0x41: "A") │ 41 │ ──── 65 (0x41: "A")
└────┘ └────┘
.... ....
@ -1526,11 +1526,11 @@ Examples:
.... ....
┌────┬────┬────┬────┐ ┌────┬────┬────┬────┐
│ 00 │ 01 │ E2 │ 40 │ ──── 123456 │ 00 │ 01 │ E2 │ 40 │ ──── 123456
└────┴────┴────┴────┘ └────┴────┴────┴────┘
┌────┬────┬────┬────┐ ┌────┬────┬────┬────┐
│ FF │ FE │ 1D │ C0 │ ──── -123456 │ FF │ FE │ 1D │ C0 │ ──── -123456
└────┴────┴────┴────┘ └────┴────┴────┴────┘
.... ....
@ -1545,13 +1545,13 @@ Examples:
.... ....
┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐ ┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ 0A ║ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 30 │ ──── 1234567890 │ 0A ║ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 30 │ ──── 1234567890
└────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘ └────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
└──┘ └───────────────────────────────────────────────┘ └──┘ └───────────────────────────────────────────────┘
length '1' '2' '3' '4' '5' '6' '7' '8' '9' '0' length '1' '2' '3' '4' '5' '6' '7' '8' '9' '0'
┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐ ┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ 0B ║ 2D │ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 30 │ ──── -1234567890 │ 0B ║ 2D │ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 30 │ ──── -1234567890
└────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘ └────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
└──┘ └────────────────────────────────────────────────────┘ └──┘ └────────────────────────────────────────────────────┘
length '-' '1' '2' '3' '4' '5' '6' '7' '8' '9' '0' length '-' '1' '2' '3' '4' '5' '6' '7' '8' '9' '0'
@ -1566,7 +1566,7 @@ Example:
.... ....
┌────┬────┬────┬────╥────┬────┬────┬────┬────┐ ┌────┬────┬────┬────╥────┬────┬────┬────┬────┐
│ 00 │ 00 │ 00 │ 05 ║ 68 │ 65 │ 6C │ 6C │ 6F │ ──── "hello" │ 00 │ 00 │ 00 │ 05 ║ 68 │ 65 │ 6C │ 6C │ 6F │ ──── "hello"
└────┴────┴────┴────╨────┴────┴────┴────┴────┘ └────┴────┴────┴────╨────┴────┴────┴────┴────┘
└─────────────────┘ └──────────────────────┘ └─────────────────┘ └──────────────────────┘
length 'h' 'e' 'l' 'l' 'o' length 'h' 'e' 'l' 'l' 'o'
@ -1576,7 +1576,7 @@ An empty string has a length of zero:
.... ....
┌────┬────┬────┬────┐ ┌────┬────┬────┬────┐
│ 00 │ 00 │ 00 │ 00 │ ──── "" │ 00 │ 00 │ 00 │ 00 │ ──── ""
└────┴────┴────┴────┘ └────┴────┴────┴────┘
└─────────────────┘ └─────────────────┘
length length
@ -1586,7 +1586,7 @@ A _NULL_ string (NULL pointer in C) has a length of -1:
.... ....
┌────┬────┬────┬────┐ ┌────┬────┬────┬────┐
│ FF │ FF │ FF │ FF │ ──── NULL │ FF │ FF │ FF │ FF │ ──── NULL
└────┴────┴────┴────┘ └────┴────┴────┴────┘
└─────────────────┘ └─────────────────┘
length length
@ -1606,7 +1606,7 @@ Example:
.... ....
┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┐ ┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ 09 ║ 31 │ 61 │ 32 │ 62 │ 33 │ 63 │ 34 │ 64 │ 35 │ ──── 0x1a2b3c4d5 │ 09 ║ 31 │ 61 │ 32 │ 62 │ 33 │ 63 │ 34 │ 64 │ 35 │ ──── 0x1a2b3c4d5
└────╨────┴────┴────┴────┴────┴────┴────┴────┴────┘ └────╨────┴────┴────┴────┴────┴────┴────┴────┴────┘
└──┘ └──────────────────────────────────────────┘ └──┘ └──────────────────────────────────────────┘
length '1' 'a' '2' 'b' '3' 'c' '4' 'd' '5' length '1' 'a' '2' 'b' '3' 'c' '4' 'd' '5'
@ -1616,7 +1616,7 @@ A _NULL_ pointer has a length of 1 with value 0:
.... ....
┌────╥────┐ ┌────╥────┐
│ 01 ║ 00 │ ──── NULL (0x0) │ 01 ║ 00 │ ──── NULL (0x0)
└────╨────┘ └────╨────┘
└──┘ └──┘ └──┘ └──┘
length 0 length 0
@ -1631,7 +1631,7 @@ Example:
.... ....
┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐ ┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ 0A ║ 31 │ 33 │ 32 │ 31 │ 39 │ 39 │ 33 │ 34 │ 35 │ 36 │ ──── 1321993456 │ 0A ║ 31 │ 33 │ 32 │ 31 │ 39 │ 39 │ 33 │ 34 │ 35 │ 36 │ ──── 1321993456
└────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘ └────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
└──┘ └───────────────────────────────────────────────┘ └──┘ └───────────────────────────────────────────────┘
length '1' '3' '2' '1' '9' '9' '3' '4' '5' '6' length '1' '3' '2' '1' '9' '9' '3' '4' '5' '6'
@ -1653,7 +1653,7 @@ Example:
.... ....
┌─────┬─────┬───╥──────┬─────╥──────┬─────┐ ┌─────┬─────┬───╥──────┬─────╥──────┬─────┐
│ str │ str │ 2 ║ key1 │ abc ║ key2 │ def │ ──── { 'key1' => 'abc', │ str │ str │ 2 ║ key1 │ abc ║ key2 │ def │ ──── { 'key1' => 'abc',
└─────┴─────┴───╨──────┴─────╨──────┴─────┘ 'key2' => 'def' } └─────┴─────┴───╨──────┴─────╨──────┴─────┘ 'key2' => 'def' }
└───┘ └───┘ └─┘ └──────────┘ └──────────┘ └───┘ └───┘ └─┘ └──────────┘ └──────────┘
type type count item 1 item 2 type type count item 1 item 2
@ -1880,7 +1880,7 @@ Example of array with two strings:
type number of strings length type number of strings length
──╥────┬────┬────╥────┬────┬────┬────╥────┬────┐ ──╥────┬────┬────╥────┬────┬────┬────╥────┬────┐
... ║ 61 │ 62 │ 63 ║ 00 │ 00 │ 00 │ 02 ║ 64 │ 65 │ ──── [ "abc", "de" ] ... ║ 61 │ 62 │ 63 ║ 00 │ 00 │ 00 │ 02 ║ 64 │ 65 │ ──── [ "abc", "de" ]
──╨────┴────┴────╨────┴────┴────┴────╨────┴────┘ ──╨────┴────┴────╨────┴────┴────┴────╨────┴────┘
└────────────┘ └─────────────────┘ └───────┘ └────────────┘ └─────────────────┘ └───────┘
'a' 'b' 'c' length 'd' 'e' 'a' 'b' 'c' length 'd' 'e'
@ -1896,7 +1896,7 @@ Example of array with three integers:
type number of integers 123 (0x7B) type number of integers 123 (0x7B)
──╥────┬────┬────┬────╥────┬────┬────┬────┐ ──╥────┬────┬────┬────╥────┬────┬────┬────┐
... ║ 00 │ 00 │ 01 │ C8 ║ 00 │ 00 │ 03 │ 15 │ ──── [ 123, 456, 789 ] ... ║ 00 │ 00 │ 01 │ C8 ║ 00 │ 00 │ 03 │ 15 │ ──── [ 123, 456, 789 ]
──╨────┴────┴────┴────╨────┴────┴────┴────┘ ──╨────┴────┴────┴────╨────┴────┴────┴────┘
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
456 (0x1C8) 789 (0x315) 456 (0x1C8) 789 (0x315)
@ -1906,7 +1906,7 @@ A _NULL_ array:
.... ....
┌─────╥────┬────┬────┬────┐ ┌─────╥────┬────┬────┬────┐
│ str ║ 00 │ 00 │ 00 │ 00 │ ──── NULL │ str ║ 00 │ 00 │ 00 │ 00 │ ──── NULL
└─────╨────┴────┴────┴────┘ └─────╨────┴────┴────┴────┘
└───┘ └─────────────────┘ └───┘ └─────────────────┘
type number of strings type number of strings
@ -1920,49 +1920,49 @@ A _NULL_ array:
│ Client ├ ─ ─ ─ ─(network)─ ─ ─ ─ ┤ Relay ├────────────────┤ WeeChat │ │ Client ├ ─ ─ ─ ─(network)─ ─ ─ ─ ┤ Relay ├────────────────┤ WeeChat │
└────────┘ └───────┘ └─────────┘ └────────┘ └───────┘ └─────────┘
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ open socket ║ add client ║ ║ open socket ║ add client ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: handshake password=xxx,... ║ negotiate algos ║ ║ cmd: handshake password=xxx,... ║ negotiate algos ║
║ ║ and options ║ ║ ║ and options ║
───────────────────────────────╢ ║ ───────────────────────────────╢ ║
║ msg: id: "handshake" ... ║ ║ ║ msg: id: "handshake" ... ║ ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: init password=xxx,... ║ authenticate client ║ ║ cmd: init password=xxx,... ║ authenticate client ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: hdata buffer ... ╟─────────────────────── ║ cmd: hdata buffer ... ╟───────────────────────
║ sync ... ║ request hdata ║ read hdata ║ sync ... ║ request hdata ║ read hdata
║ ║ ║ values ║ ║ ║ values
║ ║ ───────────────────────╢ ║ ║ ───────────────────────╢
───────────────────────────────╢ hdata ║ ───────────────────────────────╢ hdata ║
create ║ msg: hda buffer ║ ║ create ║ msg: hda buffer ║ ║
buffers ║ ║ ║ buffers ║ ║ ║
║ ........ ║ ........ ║ ║ ........ ║ ........ ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: input ... ╟─────────────────────── ║ cmd: input ... ╟───────────────────────
║ ║ send data to buffer ║ send data ║ ║ send data to buffer ║ send data
║ ║ ║ to buffer ║ ║ ║ to buffer
║ ........ ║ ........ ║ ║ ........ ║ ........ ║
║ ║ ║ signal ║ ║ ║ signal
║ ║ ───────────────────────╢ received ║ ║ ───────────────────────╢ received
───────────────────────────────╢ signal XXX ║ (hooked by ───────────────────────────────╢ signal XXX ║ (hooked by
update ║ msg: id: "_buffer_..." ║ ║ relay) update ║ msg: id: "_buffer_..." ║ ║ relay)
buffers ║ ║ ║ buffers ║ ║ ║
║ ........ ║ ........ ║ ║ ........ ║ ........ ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: ping ... ║ ║ ║ cmd: ping ... ║ ║
║ ║ ║ ║ ║ ║
───────────────────────────────╢ ║ ───────────────────────────────╢ ║
measure ║ msg: id: "_pong" ... ║ ║ measure ║ msg: id: "_pong" ... ║ ║
response ║ ║ ║ response ║ ║ ║
time ║ ........ ║ ........ ║ time ║ ........ ║ ........ ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: quit ║ disconnect client ║ ║ cmd: quit ║ disconnect client ║
║ ║ ║ ║ ║ ║
.... ....

View File

@ -36,11 +36,11 @@ Les _clients_ sont connectés au _relay_ comme dans le diagramme ci-dessous :
.... ....
┌──────────┐ Station de travail ┌──────────┐ Station de travail
┌────────┐ ┌───┤ client 1 │ (Linux, Windows, ┌────────┐ ┌───┤ client 1 │ (Linux, Windows,
│ irc │──┐ ╔═══════════╤═══════╗ │ └──────────┘ BSD, macOS ...) │ irc │──┐ ╔═══════════╤═══════╗ │ └──────────┘ BSD, macOS ...)
└────────┘ └──╢ │ ║───┘ ┌──────────┐ └────────┘ └──╢ │ ║───┘ ┌──────────┐
...... ║ WeeChat │ Relay ║───────┤ client 2 │ Appareil mobile ...... ║ WeeChat │ Relay ║───────┤ client 2 │ Appareil mobile
┌────────┐ ┌──╢ │ ║───┐ └──────────┘ (Android, iPhone ...) ┌────────┐ ┌──╢ │ ║───┐ └──────────┘ (Android, iPhone ...)
│ jabber │──┘ ╚═══════════╧═══════╝ │ ...... │ jabber │──┘ ╚═══════════╧═══════╝ │ ......
└────────┘ │ ┌──────────┐ └────────┘ │ ┌──────────┐
...... └───┤ client N │ Autres appareils ...... └───┤ client N │ Autres appareils
└──────────┘ └──────────┘
@ -1547,7 +1547,7 @@ Exemple :
.... ....
┌────┐ ┌────┐
│ 41 │ ──── 65 (0x41: "A") │ 41 │ ──── 65 (0x41: "A")
└────┘ └────┘
.... ....
@ -1563,11 +1563,11 @@ Exemples :
.... ....
┌────┬────┬────┬────┐ ┌────┬────┬────┬────┐
│ 00 │ 01 │ E2 │ 40 │ ──── 123456 │ 00 │ 01 │ E2 │ 40 │ ──── 123456
└────┴────┴────┴────┘ └────┴────┴────┴────┘
┌────┬────┬────┬────┐ ┌────┬────┬────┬────┐
│ FF │ FE │ 1D │ C0 │ ──── -123456 │ FF │ FE │ 1D │ C0 │ ──── -123456
└────┴────┴────┴────┘ └────┴────┴────┴────┘
.... ....
@ -1583,13 +1583,13 @@ Exemples :
.... ....
┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐ ┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ 0A ║ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 30 │ ──── 1234567890 │ 0A ║ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 30 │ ──── 1234567890
└────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘ └────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
└──┘ └───────────────────────────────────────────────┘ └──┘ └───────────────────────────────────────────────┘
long. '1' '2' '3' '4' '5' '6' '7' '8' '9' '0' long. '1' '2' '3' '4' '5' '6' '7' '8' '9' '0'
┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐ ┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ 0B ║ 2D │ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 30 │ ──── -1234567890 │ 0B ║ 2D │ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 30 │ ──── -1234567890
└────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘ └────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
└──┘ └────────────────────────────────────────────────────┘ └──┘ └────────────────────────────────────────────────────┘
long. '-' '1' '2' '3' '4' '5' '6' '7' '8' '9' '0' long. '-' '1' '2' '3' '4' '5' '6' '7' '8' '9' '0'
@ -1605,7 +1605,7 @@ Exemple :
.... ....
┌────┬────┬────┬────╥────┬────┬────┬────┬────┐ ┌────┬────┬────┬────╥────┬────┬────┬────┬────┐
│ 00 │ 00 │ 00 │ 05 ║ 68 │ 65 │ 6C │ 6C │ 6F │ ──── "hello" │ 00 │ 00 │ 00 │ 05 ║ 68 │ 65 │ 6C │ 6C │ 6F │ ──── "hello"
└────┴────┴────┴────╨────┴────┴────┴────┴────┘ └────┴────┴────┴────╨────┴────┴────┴────┴────┘
└─────────────────┘ └──────────────────────┘ └─────────────────┘ └──────────────────────┘
longueur 'h' 'e' 'l' 'l' 'o' longueur 'h' 'e' 'l' 'l' 'o'
@ -1615,7 +1615,7 @@ Une chaîne vide a une longueur de zéro :
.... ....
┌────┬────┬────┬────┐ ┌────┬────┬────┬────┐
│ 00 │ 00 │ 00 │ 00 │ ──── "" │ 00 │ 00 │ 00 │ 00 │ ──── ""
└────┴────┴────┴────┘ └────┴────┴────┴────┘
└─────────────────┘ └─────────────────┘
longueur longueur
@ -1625,7 +1625,7 @@ Une chaîne _NULL_ (pointeur NULL en C) a une longueur de -1 :
.... ....
┌────┬────┬────┬────┐ ┌────┬────┬────┬────┐
│ FF │ FF │ FF │ FF │ ──── NULL │ FF │ FF │ FF │ FF │ ──── NULL
└────┴────┴────┴────┘ └────┴────┴────┴────┘
└─────────────────┘ └─────────────────┘
longueur longueur
@ -1647,7 +1647,7 @@ Exemple :
.... ....
┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┐ ┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ 09 ║ 31 │ 61 │ 32 │ 62 │ 33 │ 63 │ 34 │ 64 │ 35 │ ──── 0x1a2b3c4d5 │ 09 ║ 31 │ 61 │ 32 │ 62 │ 33 │ 63 │ 34 │ 64 │ 35 │ ──── 0x1a2b3c4d5
└────╨────┴────┴────┴────┴────┴────┴────┴────┴────┘ └────╨────┴────┴────┴────┴────┴────┴────┴────┴────┘
└──┘ └──────────────────────────────────────────┘ └──┘ └──────────────────────────────────────────┘
long. '1' 'a' '2' 'b' '3' 'c' '4' 'd' '5' long. '1' 'a' '2' 'b' '3' 'c' '4' 'd' '5'
@ -1657,7 +1657,7 @@ Un pointeur _NULL_ a une longueur de 1 avec la valeur 0 :
.... ....
┌────╥────┐ ┌────╥────┐
│ 01 ║ 00 │ ──── NULL (0x0) │ 01 ║ 00 │ ──── NULL (0x0)
└────╨────┘ └────╨────┘
└──┘ └──┘ └──┘ └──┘
long. 0 long. 0
@ -1673,7 +1673,7 @@ Exemple :
.... ....
┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐ ┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ 0A ║ 31 │ 33 │ 32 │ 31 │ 39 │ 39 │ 33 │ 34 │ 35 │ 36 │ ──── 1321993456 │ 0A ║ 31 │ 33 │ 32 │ 31 │ 39 │ 39 │ 33 │ 34 │ 35 │ 36 │ ──── 1321993456
└────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘ └────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
└──┘ └───────────────────────────────────────────────┘ └──┘ └───────────────────────────────────────────────┘
long. '1' '3' '2' '1' '9' '9' '3' '4' '5' '6' long. '1' '3' '2' '1' '9' '9' '3' '4' '5' '6'
@ -1696,7 +1696,7 @@ Exemple :
.... ....
┌─────┬─────┬───╥──────┬─────╥──────┬─────┐ ┌─────┬─────┬───╥──────┬─────╥──────┬─────┐
│ str │ str │ 2 ║ key1 │ abc ║ key2 │ def │ ──── { 'key1' => 'abc', │ str │ str │ 2 ║ key1 │ abc ║ key2 │ def │ ──── { 'key1' => 'abc',
└─────┴─────┴───╨──────┴─────╨──────┴─────┘ 'key2' => 'def' } └─────┴─────┴───╨──────┴─────╨──────┴─────┘ 'key2' => 'def' }
└───┘ └───┘ └─┘ └──────────┘ └──────────┘ └───┘ └───┘ └─┘ └──────────┘ └──────────┘
type type nombre élément 1 élément 2 type type nombre élément 1 élément 2
@ -1928,7 +1928,7 @@ Exemple de tableau avec deux chaînes de caractères :
type nombre de chaînes longueur type nombre de chaînes longueur
──╥────┬────┬────╥────┬────┬────┬────╥────┬────┐ ──╥────┬────┬────╥────┬────┬────┬────╥────┬────┐
... ║ 61 │ 62 │ 63 ║ 00 │ 00 │ 00 │ 02 ║ 64 │ 65 │ ──── [ "abc", "de" ] ... ║ 61 │ 62 │ 63 ║ 00 │ 00 │ 00 │ 02 ║ 64 │ 65 │ ──── [ "abc", "de" ]
──╨────┴────┴────╨────┴────┴────┴────╨────┴────┘ ──╨────┴────┴────╨────┴────┴────┴────╨────┴────┘
└────────────┘ └─────────────────┘ └───────┘ └────────────┘ └─────────────────┘ └───────┘
'a' 'b' 'c' longueur 'd' 'e' 'a' 'b' 'c' longueur 'd' 'e'
@ -1944,7 +1944,7 @@ Exemple de tableau avec trois entiers :
type nombre d'entiers 123 (0x7B) type nombre d'entiers 123 (0x7B)
──╥────┬────┬────┬────╥────┬────┬────┬────┐ ──╥────┬────┬────┬────╥────┬────┬────┬────┐
... ║ 00 │ 00 │ 01 │ C8 ║ 00 │ 00 │ 03 │ 15 │ ──── [ 123, 456, 789 ] ... ║ 00 │ 00 │ 01 │ C8 ║ 00 │ 00 │ 03 │ 15 │ ──── [ 123, 456, 789 ]
──╨────┴────┴────┴────╨────┴────┴────┴────┘ ──╨────┴────┴────┴────╨────┴────┴────┴────┘
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
456 (0x1C8) 789 (0x315) 456 (0x1C8) 789 (0x315)
@ -1954,7 +1954,7 @@ Un tableau _NULL_ :
.... ....
┌─────╥────┬────┬────┬────┐ ┌─────╥────┬────┬────┬────┐
│ str ║ 00 │ 00 │ 00 │ 00 │ ──── NULL │ str ║ 00 │ 00 │ 00 │ 00 │ ──── NULL
└─────╨────┴────┴────┴────┘ └─────╨────┴────┴────┴────┘
└───┘ └─────────────────┘ └───┘ └─────────────────┘
type nombre de chaînes type nombre de chaînes
@ -1968,49 +1968,49 @@ Un tableau _NULL_ :
│ Client ├ ─ ─ ─ ─ (réseau)─ ─ ─ ─ ┤ Relay ├────────────────┤ WeeChat │ │ Client ├ ─ ─ ─ ─ (réseau)─ ─ ─ ─ ┤ Relay ├────────────────┤ WeeChat │
└────────┘ └───────┘ └─────────┘ └────────┘ └───────┘ └─────────┘
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ ouverture socket ║ ajout du client ║ ║ ouverture socket ║ ajout du client ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: handshake password=xxx,... ║ négociation algos ║ ║ cmd: handshake password=xxx,... ║ négociation algos ║
║ ║ et options ║ ║ ║ et options ║
───────────────────────────────╢ ║ ───────────────────────────────╢ ║
║ msg: id: "handshake" ... ║ ║ ║ msg: id: "handshake" ... ║ ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: init password=xxx,... ║ authentification ║ ║ cmd: init password=xxx,... ║ authentification ║
║ ║ client ║ ║ ║ client ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: hdata buffer ... ╟─────────────────────── ║ cmd: hdata buffer ... ╟───────────────────────
║ sync ... ║ demande de hdata ║ lecture ║ sync ... ║ demande de hdata ║ lecture
║ ║ ║ valeurs ║ ║ ║ valeurs
║ ║ ───────────────────────╢ hdata ║ ║ ───────────────────────╢ hdata
───────────────────────────────╢ hdata ║ ───────────────────────────────╢ hdata ║
créat° ║ msg: hda buffer ║ ║ créat° ║ msg: hda buffer ║ ║
tampons ║ ║ ║ tampons ║ ║ ║
║ ........ ║ ........ ║ ║ ........ ║ ........ ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: input ... ╟─────────────────────── ║ cmd: input ... ╟───────────────────────
║ ║ envoi données au tampon ║ envoi données ║ ║ envoi données au tampon ║ envoi données
║ ║ ║ au tampon ║ ║ ║ au tampon
║ ........ ║ ........ ║ ║ ........ ║ ........ ║
║ ║ ║ signal ║ ║ ║ signal
║ ║ ───────────────────────╢ reçu ║ ║ ───────────────────────╢ reçu
───────────────────────────────╢ signal XXX ║ (accroché ───────────────────────────────╢ signal XXX ║ (accroché
MAJ ║ msg: id: "_buffer_..." ║ ║ par relay) MAJ ║ msg: id: "_buffer_..." ║ ║ par relay)
tampons ║ ║ ║ tampons ║ ║ ║
║ ........ ║ ........ ║ ║ ........ ║ ........ ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: ping ... ║ ║ ║ cmd: ping ... ║ ║
║ ║ ║ ║ ║ ║
───────────────────────────────╢ ║ ───────────────────────────────╢ ║
mesure ║ msg: id: "_pong" ... ║ ║ mesure ║ msg: id: "_pong" ... ║ ║
temps ║ ║ ║ temps ║ ║ ║
réponse ║ ........ ║ ........ ║ réponse ║ ........ ║ ........ ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: quit ║ déconnexion du client ║ ║ cmd: quit ║ déconnexion du client ║
║ ║ ║ ║ ║ ║
.... ....

View File

@ -39,11 +39,11 @@
.... ....
┌────────────────┐ ワークステーション ┌────────────────┐ ワークステーション
┌────────┐ ┌───┤ クライアント 1 │ (Linux、Windows、 ┌────────┐ ┌───┤ クライアント 1 │ (Linux、Windows、
│ irc │──┐ ╔═══════════╤════════╗ │ └────────────────┘ BSD、macOS ...) │ irc │──┐ ╔═══════════╤════════╗ │ └────────────────┘ BSD、macOS ...)
└────────┘ └──╢ │ ║───┘ ┌────────────────┐ └────────┘ └──╢ │ ║───┘ ┌────────────────┐
...... ║ WeeChat │ リレー ║───────┤ クライアント 2 │ 携帯デバイス ...... ║ WeeChat │ リレー ║───────┤ クライアント 2 │ 携帯デバイス
┌────────┐ ┌──╢ │ ║───┐ └────────────────┘ (Android、iPhone ...) ┌────────┐ ┌──╢ │ ║───┐ └────────────────┘ (Android、iPhone ...)
│ jabber │──┘ ╚═══════════╧════════╝ │ ...... │ jabber │──┘ ╚═══════════╧════════╝ │ ......
└────────┘ │ ┌────────────────┐ └────────┘ │ ┌────────────────┐
...... └───┤ クライアント N │ その他のデバイス ...... └───┤ クライアント N │ その他のデバイス
└────────────────┘ └────────────────┘
@ -1524,7 +1524,7 @@ _WeeChat バージョン 0.3.8 以上で利用可。_
.... ....
┌────┐ ┌────┐
│ 41 │ ──── 65 (0x41: "A") │ 41 │ ──── 65 (0x41: "A")
└────┘ └────┘
.... ....
@ -1540,11 +1540,11 @@ _WeeChat バージョン 0.3.8 以上で利用可。_
.... ....
┌────┬────┬────┬────┐ ┌────┬────┬────┬────┐
│ 00 │ 01 │ E2 │ 40 │ ──── 123456 │ 00 │ 01 │ E2 │ 40 │ ──── 123456
└────┴────┴────┴────┘ └────┴────┴────┴────┘
┌────┬────┬────┬────┐ ┌────┬────┬────┬────┐
│ FF │ FE │ 1D │ C0 │ ──── -123456 │ FF │ FE │ 1D │ C0 │ ──── -123456
└────┴────┴────┴────┘ └────┴────┴────┴────┘
.... ....
@ -1559,13 +1559,13 @@ _WeeChat バージョン 0.3.8 以上で利用可。_
.... ....
┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐ ┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ 0A ║ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 30 │ ──── 1234567890 │ 0A ║ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 30 │ ──── 1234567890
└────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘ └────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
└──┘ └───────────────────────────────────────────────┘ └──┘ └───────────────────────────────────────────────┘
length '1' '2' '3' '4' '5' '6' '7' '8' '9' '0' length '1' '2' '3' '4' '5' '6' '7' '8' '9' '0'
┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐ ┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ 0B ║ 2D │ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 30 │ ──── -1234567890 │ 0B ║ 2D │ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 30 │ ──── -1234567890
└────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘ └────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
└──┘ └────────────────────────────────────────────────────┘ └──┘ └────────────────────────────────────────────────────┘
length '-' '1' '2' '3' '4' '5' '6' '7' '8' '9' '0' length '-' '1' '2' '3' '4' '5' '6' '7' '8' '9' '0'
@ -1580,7 +1580,7 @@ length '-' '1' '2' '3' '4' '5' '6' '7' '8' '9' '0'
.... ....
┌────┬────┬────┬────╥────┬────┬────┬────┬────┐ ┌────┬────┬────┬────╥────┬────┬────┬────┬────┐
│ 00 │ 00 │ 00 │ 05 ║ 68 │ 65 │ 6C │ 6C │ 6F │ ──── "hello" │ 00 │ 00 │ 00 │ 05 ║ 68 │ 65 │ 6C │ 6C │ 6F │ ──── "hello"
└────┴────┴────┴────╨────┴────┴────┴────┴────┘ └────┴────┴────┴────╨────┴────┴────┴────┴────┘
└─────────────────┘ └──────────────────────┘ └─────────────────┘ └──────────────────────┘
length 'h' 'e' 'l' 'l' 'o' length 'h' 'e' 'l' 'l' 'o'
@ -1590,7 +1590,7 @@ length '-' '1' '2' '3' '4' '5' '6' '7' '8' '9' '0'
.... ....
┌────┬────┬────┬────┐ ┌────┬────┬────┬────┐
│ 00 │ 00 │ 00 │ 00 │ ──── "" │ 00 │ 00 │ 00 │ 00 │ ──── ""
└────┴────┴────┴────┘ └────┴────┴────┴────┘
└─────────────────┘ └─────────────────┘
length length
@ -1600,7 +1600,7 @@ _NULL_ 文字列 (C 言語の NULL ポインタ) を表現するにはの長さ
.... ....
┌────┬────┬────┬────┐ ┌────┬────┬────┬────┐
│ FF │ FF │ FF │ FF │ ──── NULL │ FF │ FF │ FF │ FF │ ──── NULL
└────┴────┴────┴────┘ └────┴────┴────┴────┘
└─────────────────┘ └─────────────────┘
length length
@ -1620,7 +1620,7 @@ _NULL_ 文字列 (C 言語の NULL ポインタ) を表現するにはの長さ
.... ....
┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┐ ┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ 09 ║ 31 │ 61 │ 32 │ 62 │ 33 │ 63 │ 34 │ 64 │ 35 │ ──── 0x1a2b3c4d5 │ 09 ║ 31 │ 61 │ 32 │ 62 │ 33 │ 63 │ 34 │ 64 │ 35 │ ──── 0x1a2b3c4d5
└────╨────┴────┴────┴────┴────┴────┴────┴────┴────┘ └────╨────┴────┴────┴────┴────┴────┴────┴────┴────┘
└──┘ └──────────────────────────────────────────┘ └──┘ └──────────────────────────────────────────┘
length '1' 'a' '2' 'b' '3' 'c' '4' 'd' '5' length '1' 'a' '2' 'b' '3' 'c' '4' 'd' '5'
@ -1630,7 +1630,7 @@ _NULL_ ポインタを表現するには長さを 1 で値を 0 にしてくだ
.... ....
┌────╥────┐ ┌────╥────┐
│ 01 ║ 00 │ ──── NULL (0x0) │ 01 ║ 00 │ ──── NULL (0x0)
└────╨────┘ └────╨────┘
└──┘ └──┘ └──┘ └──┘
length 0 length 0
@ -1645,7 +1645,7 @@ length 0
.... ....
┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐ ┌────╥────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ 0A ║ 31 │ 33 │ 32 │ 31 │ 39 │ 39 │ 33 │ 34 │ 35 │ 36 │ ──── 1321993456 │ 0A ║ 31 │ 33 │ 32 │ 31 │ 39 │ 39 │ 33 │ 34 │ 35 │ 36 │ ──── 1321993456
└────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘ └────╨────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
└──┘ └───────────────────────────────────────────────┘ └──┘ └───────────────────────────────────────────────┘
length '1' '3' '2' '1' '9' '9' '3' '4' '5' '6' length '1' '3' '2' '1' '9' '9' '3' '4' '5' '6'
@ -1667,7 +1667,7 @@ length '1' '3' '2' '1' '9' '9' '3' '4' '5' '6'
.... ....
┌─────┬─────┬───╥──────┬─────╥──────┬─────┐ ┌─────┬─────┬───╥──────┬─────╥──────┬─────┐
│ str │ str │ 2 ║ key1 │ abc ║ key2 │ def │ ──── { 'key1' => 'abc', │ str │ str │ 2 ║ key1 │ abc ║ key2 │ def │ ──── { 'key1' => 'abc',
└─────┴─────┴───╨──────┴─────╨──────┴─────┘ 'key2' => 'def' } └─────┴─────┴───╨──────┴─────╨──────┴─────┘ 'key2' => 'def' }
└───┘ └───┘ └─┘ └──────────┘ └──────────┘ └───┘ └───┘ └─┘ └──────────┘ └──────────┘
type type count item 1 item 2 type type count item 1 item 2
@ -1894,7 +1894,7 @@ infolist buffer
type number of strings length type number of strings length
──╥────┬────┬────╥────┬────┬────┬────╥────┬────┐ ──╥────┬────┬────╥────┬────┬────┬────╥────┬────┐
... ║ 61 │ 62 │ 63 ║ 00 │ 00 │ 00 │ 02 ║ 64 │ 65 │ ──── [ "abc", "de" ] ... ║ 61 │ 62 │ 63 ║ 00 │ 00 │ 00 │ 02 ║ 64 │ 65 │ ──── [ "abc", "de" ]
──╨────┴────┴────╨────┴────┴────┴────╨────┴────┘ ──╨────┴────┴────╨────┴────┴────┴────╨────┴────┘
└────────────┘ └─────────────────┘ └───────┘ └────────────┘ └─────────────────┘ └───────┘
'a' 'b' 'c' length 'd' 'e' 'a' 'b' 'c' length 'd' 'e'
@ -1910,7 +1910,7 @@ infolist buffer
type number of integers 123 (0x7B) type number of integers 123 (0x7B)
──╥────┬────┬────┬────╥────┬────┬────┬────┐ ──╥────┬────┬────┬────╥────┬────┬────┬────┐
... ║ 00 │ 00 │ 01 │ C8 ║ 00 │ 00 │ 03 │ 15 │ ──── [ 123, 456, 789 ] ... ║ 00 │ 00 │ 01 │ C8 ║ 00 │ 00 │ 03 │ 15 │ ──── [ 123, 456, 789 ]
──╨────┴────┴────┴────╨────┴────┴────┴────┘ ──╨────┴────┴────┴────╨────┴────┴────┴────┘
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
456 (0x1C8) 789 (0x315) 456 (0x1C8) 789 (0x315)
@ -1920,7 +1920,7 @@ _NULL_ 配列:
.... ....
┌─────╥────┬────┬────┬────┐ ┌─────╥────┬────┬────┬────┐
│ str ║ 00 │ 00 │ 00 │ 00 │ ──── NULL │ str ║ 00 │ 00 │ 00 │ 00 │ ──── NULL
└─────╨────┴────┴────┴────┘ └─────╨────┴────┴────┴────┘
└───┘ └─────────────────┘ └───┘ └─────────────────┘
type number of strings type number of strings
@ -1935,49 +1935,49 @@ _NULL_ 配列:
│ クライアント ├ ─(ネットワーク)─ ┤ リレー ├──────────────────┤ WeeChat │ │ クライアント ├ ─(ネットワーク)─ ┤ リレー ├──────────────────┤ WeeChat │
└──────────────┘ └────────┘ └─────────┘ └──────────────┘ └────────┘ └─────────┘
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ ソケットをオープン ║ クライアントを追加 ║ ║ ソケットをオープン ║ クライアントを追加 ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: handshake password=xxx,... ║ negotiate algos ║ ║ cmd: handshake password=xxx,... ║ negotiate algos ║
║ ║ and options ║ ║ ║ and options ║
───────────────────────────────╢ ║ ───────────────────────────────╢ ║
║ msg: id: "handshake" ... ║ ║ ║ msg: id: "handshake" ... ║ ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: init password=xxx,... ║ クライアントを初期化/許可 ║ ║ cmd: init password=xxx,... ║ クライアントを初期化/許可 ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: hdata buffer ... ╟───────────────────────── ║ cmd: hdata buffer ... ╟─────────────────────────
║ sync ... ║ hdata の要求 ║ hdata ║ sync ... ║ hdata の要求 ║ hdata
║ ║ ║ の値を読み出し ║ ║ ║ の値を読み出し
║ ║ ─────────────────────────╢ ║ ║ ─────────────────────────╢
───────────────────────────────╢ hdata ║ ───────────────────────────────╢ hdata ║
バッファ ║ msg: hda buffer ║ ║ バッファ ║ msg: hda buffer ║ ║
を作成 ║ ║ ║ を作成 ║ ║ ║
║ ........ ║ ........ ║ ║ ........ ║ ........ ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: input ... ╟───────────────────────── ║ cmd: input ... ╟─────────────────────────
║ ║ バッファにデータを送信 ║ バッファに ║ ║ バッファにデータを送信 ║ バッファに
║ ║ ║ データを送信 ║ ║ ║ データを送信
║ ........ ║ ........ ║ ║ ........ ║ ........ ║
║ ║ ║ シグナル ║ ║ ║ シグナル
║ ║ ─────────────────────────╢ の受信 ║ ║ ─────────────────────────╢ の受信
───────────────────────────────╢ シグナル XXX ║ (リレー ───────────────────────────────╢ シグナル XXX ║ (リレー
バッファ ║ msg: id: "_buffer_..." ║ ║ がフック) バッファ ║ msg: id: "_buffer_..." ║ ║ がフック)
を更新 ║ ║ ║ を更新 ║ ║ ║
║ ........ ║ ........ ║ ║ ........ ║ ........ ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: ping ... ║ ║ ║ cmd: ping ... ║ ║
║ ║ ║ ║ ║ ║
───────────────────────────────╢ ║ ───────────────────────────────╢ ║
応答 ║ msg: id: "_pong" ... ║ ║ 応答 ║ msg: id: "_pong" ... ║ ║
時間 ║ ║ ║ 時間 ║ ║ ║
を計測 ║ ........ ║ ........ ║ を計測 ║ ........ ║ ........ ║
║ ║ ║ ║ ║ ║
╟─────────────────────────────── ║ ║ ╟─────────────────────────────── ║ ║
║ cmd: quit ║ クライアントを切断 ║ ║ cmd: quit ║ クライアントを切断 ║
║ ║ ║ ║ ║ ║
.... ....