From 0407203bbde75a1d2538a4333ad16f035ea16004 Mon Sep 17 00:00:00 2001 From: "anwinged@gmail.com" Date: Sat, 10 Dec 2011 08:33:51 +0000 Subject: [PATCH] Edited wiki page Protocol through web user interface. --- wiki/Protocol.wiki | 139 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 122 insertions(+), 17 deletions(-) diff --git a/wiki/Protocol.wiki b/wiki/Protocol.wiki index 5452dfb..dd02dd4 100644 --- a/wiki/Protocol.wiki +++ b/wiki/Protocol.wiki @@ -11,12 +11,38 @@ == Формат сообщения == -Все сообщения строятся по одному шаблону: +Все сообщения строятся по одному шаблону, очень похожему на протокол JSON. В основе выбранного стиля лежит набор пар ключ-значение, которое в большинстве языков программирования представляется в виде ассоциативного массива. + +В общем случае сообщение выглядит следующим образом - это набор пар ключ-значение, заключенный в фигурные скобки. {{{ -MethodName -MessageBody +{ тело сообщения } }}} +Пример простейшего сообщения: +{{{ +{ request = info } +}}} + +== Ключевые слова == + +Некоторые из ключей являются специальными словами, жестко установленными, для возможности адекватного общения меду сервером и клиентом. + +|| *Слово* || Краткое описание || +|| request || запрос какой-либо информации || +|| answer || ответ на запрос || +|| status || статус опрашиваемого процесса || +|| main || секция с описанием параметров модели || +|| algo || секция с описанием алгоритмов-методов модели || +|| header || секция с описанием заголовка таблицы результатов || +|| table || секция с описанием таблицы результатов || +|| comment || комментарий || + +Теперь более подробно о каждом из ключевых слов. + +=== request === + +=== answer === + == Типы данных == = Соединение сервер - задача = @@ -42,19 +68,98 @@ _name_ = _type_ (choice _list_) (default _value_) (check _expr_) == Получение результата == -== Пример сессии == += Соединение сервер - ГИП = + += Пример сессии = -Пример записи, описывающий задачу про сахарный диабет: {{{ -[Main] -time = period default 0 to 24 -initx = float default 30.0 -inity = float default 10.0 -[Genetic] -population = int default 1000 -fitness = string choice [std, lst] default std -[Bellman] -xpart = partition default 0 to 100 by 1 -}}} - -= Соединение сервер - ГИП = \ No newline at end of file +// запрос сервера на получение информации о задаче +{ + request = info +} +// ответ клиента-задачи +{ + answer = ok + + meta = { + detailed = true + } + + main = { + size = int default 100 + x = float default 20.0 + y = float default 0.0 + time = period default 00:00 to 24:00 comment twenty-four hours + } + + algo = { + + genetic = { + method = string choice [std, last] default std + poplulation = int default 1000 + } + + bellman = { + xpart = float partition 0 to 100 by 1 + ypart = float partition 0 to 50 by 0.5 + } + } +} +// запрос сервера на вычисления по указанным параметрам +{ + request = calculate + + main = { + size = 100 + x = 20.0 + y = 5.0 + time = 00:00 to 48:00 + } + + algo = { + genetic = { + method = last + population = 1200 + } + } +} +// ответ клиента задачи о том, что вычисления начались +{ + answer = ok + status = inprogress +} +// запрос сервера о статусе вычислений +{ + request = status +} +// ответ клиента-задачи о том, что прошла уже половина вычислений +{ + answer = ok + status = inprogress + percent = 0.50 + comment = 10 минут, полет нормальный +} +// снова запрос сервера о статусе +{ + request = status +} +// клиент сообщает, что вычисления завершены, и предоставляет таблицу результатов +{ + answer = ok + status = ready + + header = { + time = datetime + x = float + y = float + u = float comment management + } + + table = { + 00:00 20.0 5.0 0.0 + 01:00 18.0 6.0 1.0 + 02:00 16.0 7.0 2.0 + //... + } +} +}}} \ No newline at end of file