Руководство Melbis Shop: оглавление
Сессия — это работа MCP-сервера с одним магазином под одним логином.
Всё, что агент делает с магазином, происходит внутри открытой сессии.
Три инструмента семьи session_ её открывают и обслуживают,
и ни один из них не требует прав: сессия должна открываться раньше, чем
что-либо можно запретить.
session_init —
осмотреться: в какой магазин войдёт сессия и запущена ли программа.
Ничего не меняет, вызывать можно сколько угодно.session_connect —
открыть сессию. Ответ сообщает всё о ней и приносит общие правила
агента.session_rules_accept и
повторяет вызов.Агент не выбирает ни магазин, ни логин. Магазин — тот, что последним открыт в программе или за которым закреплён сервер. Логин — человека, который сидит за программой, или сохранённый в её настройках. Поэтому агент не войдёт туда, куда не входил человек, а пароль не попадёт в переписку. Переключить магазин может только человек, в программе. Как именно сервер находит магазин и пару логин-пароль — «Вход, права, лицензия».
При входе сервер запоминает и держит до конца сессии:
| Что | Зачем |
|---|---|
| магазин и логин | все запросы идут в этот магазин под этим логином |
| выданные права | на вызов невыданного инструмента сервер отказывает сразу, не обращаясь к магазину |
| критические заметки памяти: сколько их и какие прочитаны | пока не прочитаны все, остальные инструменты отказывают |
| принятые правила инструментов и случайное число для их кодов | принятые правила не спрашиваются повторно, а код из другой сессии не подходит |
Лицензию сессия не запоминает: файл лицензии сервер ищет заново при каждом запросе.
Сессия живёт в процессе сервера. Она кончается, когда:
Not connected, и агент
входит заново;session_connect.
Сессия открывается заново, и всё запомненное сбрасывается.| Что случилось | Почему |
|---|---|
пришёл отказ STORE_SWITCHED |
в программе открыт другой магазин, а незакреплённый сервер работает только с магазином программы |
| владелец выдал или снял право | права запоминаются при входе |
пришёл отказ Not connected |
сессии нет |