94 lines
4.7 KiB
Markdown
94 lines
4.7 KiB
Markdown
# Спецификация протокола SSP
|
||
|
||
*Версия 1.2.4*
|
||
|
||
## Определения
|
||
|
||
*SSP (SimpleSmokeProtocol)* - простой протокол установления соглашения для
|
||
совместного похода до мест разрешенных для курения.
|
||
|
||
*Вызывающая сторона* - субъект инициирующий запрос
|
||
|
||
*Вызываемая сторона* - субъект принимающий запрос
|
||
|
||
## Описание команд протокола
|
||
|
||
`?` - запрос, инициирующий протокол. Соответствует фразе «Пойдем курить?»
|
||
|
||
`?X` - запрос, инициирующий протокол идти курить, но с отсрочкой на X минут. Соответствует фразе «Пойдем курить через X минут?»
|
||
|
||
`!` - ответ на запрос инициирующий запрос, подразумевающий ответное желание идти
|
||
курить. Соответствует фразе «Да, пошли»
|
||
|
||
`+` - ответ на запрос инициирующий запрос, подразумевающий ответное желание идти
|
||
курить. Соответствует фразе «Да, пошли». Синоним предыдущего ответа.
|
||
|
||
`#` - ответ на запрос инициирующий запрос, подразумевающий отказ от похода курить.
|
||
Соответствует фразе «Нет, не хочу»
|
||
|
||
`#X` - ответ на запрос инициирующий запрос, подразумевающий отказ от похода курить.
|
||
Соответствует фразе «Нет, не хочу, X минут назад курил».
|
||
В случае, если точное время определить не представляется возможным, следует использовать
|
||
знак `~` («тильда»), подразумевающий неопределённое, но небольшое (до 45 минут) время.
|
||
В случае бо́льшего времени, возможно, следует использовать простой негативный
|
||
ответ - `#` либо отвечать позитивным ответом - `!`.
|
||
|
||
`@X` - ответ на запрос инициирующий запрос, подразумевающий ответное желание
|
||
идти курить но с отсрочкой на X минут. В случае, если точное время определить
|
||
не представляется возможным, следует использовать знак `~` («тильда»), подразумевающий
|
||
неопределённое, но небольшое (до 15 минут) время. В случае бо́льшего
|
||
времени, следует использовать негативный ответ - `#`. Соответствует фразе «Пошли,
|
||
но через X минут.»
|
||
|
||
`>` - синхронизирующая команда, обозначающая начало исполнения протокола вызывающей стороной. Соответствует фразе «Выхожу!».
|
||
|
||
`>>` - синхронизирующая команда, обозначающая начало исполнения протокола вызываемой стороной. Соответствует фразе «Я тоже выхожу».
|
||
|
||
## Пример использования протокола
|
||
|
||
X - вызывающий
|
||
Y - вызываемый
|
||
|
||
### Пример 1
|
||
|
||
X: ? («Пойдем курить?»)
|
||
Y: ! («Да, пошли»)
|
||
X: > («Выхожу!»)
|
||
Y: >> («Я тоже выхожу.»)
|
||
|
||
### Пример 1.2
|
||
|
||
X: ? («Пойдем курить?»)
|
||
Y: + («Да, пошли»)
|
||
X: > («Выхожу!»)
|
||
Y: >> («Я тоже выхожу.»)
|
||
|
||
### Пример 2
|
||
|
||
X: ? («Пойдем курить?»)
|
||
Y: @5 («Пошли, но через 5 минут.»)
|
||
Y: ! («Да, пошли»)
|
||
X: > («Выхожу!»)
|
||
Y: >> («Я тоже выхожу.»)
|
||
|
||
### Пример 3
|
||
|
||
X: ? («Пойдем курить?»)
|
||
Y: # («Нет, не хочу»)
|
||
|
||
### Пример 4
|
||
|
||
X: ? («Пойдем курить?»)
|
||
Y: #20 («Нет, не хочу, 20 минут назад курил»)
|
||
|
||
### Пример 5
|
||
|
||
X: ? («Пойдем курить?»)
|
||
Y: #~ («Нет, не хочу, только что курил»)
|
||
|
||
### Пример 6
|
||
|
||
X: ?10 («Пойдем курить через 10 минут?»)
|
||
Y: #2 («Нет, не хочу, 2 минуты назад курил»)
|
||
|