Описание объекта JCJSLocalClient плагина PluginNetwork

Объект JCJSLocalClient это полнофункциональный асинхронный клиент обмена через именованные каналы (pipe)

В этом разделе перечислены свойства и методы объекта JCJSLocalClient плагина PluginNetwork

В JCJSLocalClient реализован протокол обмена jCjS, гарантирующий неизменную доставку JS объектов между постами jCjS в рамках одного хоста.
Для совместимости со сторонним ПО, предусмотрен режим raw.


Пример использования находится в каталоге stuff/tests/pluginNetwork/LOC_Srv


Свойства (property)


Объект JCJSTcpClient имеет общие свойства указанные в описательной части протокола обмена jCjS
ВНИМАНИЕ!!!, свойство protoSelf по умолчанию имеет значение 0

Пример использования:

// Загрузить плагин и Установить в JS конструторы объектов
post.loadPlugin('PluginNetwork').install(scriptEngine);

// Создать объект, к свойствам и
// методам которого можно обращаться в стиле Qt
var locClient = new JCJSLocalClient();
//свойство параметра чтение/запись:
// Чтение
var timeout = locClient.timeout;
// Запись
var timeout = 100;
locClient.timeout = timeout;

int locClient.socketDescriptor только чтение
Дескриптор соединения

var socketDesc = locClient.socketDescriptor;


int locClient.intrval чтение/запись
Интервал чтения из сокета


bool locClient.raw чтение/запись
Включение raw режима (по умолчанию выключен)


quint8 locClient.stopChar чтение/запись
В режиме raw: Символ конца приемной посылки (по умолчанию 0 - выключен)


String locClient.stopWord чтение/запись
В режиме raw: Слово конца приемной посылки (по умолчанию '' - выключен)
stopChar более приоритетнее чем stopWord



Сигналы

void locClient.readyRead(Variant message)

генерируется объектом JCJSlocClient при успешном приеме сообщения

// подсоединить к сигналу readyRead функцию обработчик
locClient.readyRead.connect(function messageRead(mess){
    post.log("i", 'Сервер прислал сообщение: ' + JSON.stringify(mess))
});
// эквивалентно следующей конструкции
function messageRead(mess, socketDesc){
    post.log("i", 'Сервер прислал сообщение: ' + JSON.stringify(mess));
}
locClient.readyRead.connect(messageRead);

// следующей тривиальной строкой можно автоматически отправлять эхо-ответ
locClient.readyRead.connect(locClient.sendMessage);

void locClient.connected() Сигнал

генерируется объектом JCJSlocClient при успешном подсоединении клиента к серверу

// подсоединить к сигналу connected функцию обработчик
locClient.connected.connect(function clientConnected(){
    post.log("i", 'Есть соединение с сервером: serv=' + locClient.peerName + '  port=' + locClient.peerPort)
});

void locClient.disconnected() Сигнал

генерируется объектом JCJSlocClient при разъединении соединения с сервером

// подсоединить к сигналу disconnected функцию обработчик
locClient.disconnected.connect(function clientDisconnected(){
    post.log("i", 'Разрыв соединения с сервером')
});

void locClient.error(String) Сигнал

генерируется объектом JCJSlocClient при ошибках в соединении с сервером

// подсоединить к сигналу error функцию обработчик
locClient.error.connect(function error(errStr){
    post.log("i", 'Ошибка соединения: ' + errStr)
});

void locClient.protoSelfChange(newVer, oldVer) Сигнал

генерируется объектом JCJSlocClient если в процессе обмена протокол был изменен

locClient.protoSelfChange.connect(function protoSelfChange(newVer, oldVer){
    if(newVer === 0 && oldVer > 0) {
       post.log('w',  'было понижение версии. Встроенное шифрование crypt отключено');
       post.log('w', 'cli: '+JSON.stringify(locClient.clientInfo()) );
    }
});


Методы

void locClient.connectToServer(String pipeName) Функция

Подключиться к именованному каналу

if(locClient.connectToServer('pipeName'))   // установить имя канала
    post.log("i", "Client connected to pipe://" + locClient.clientInfo().serverName);
else
    post.log("e", "Client not connected");
//----------------------------------------------
// равнозначно следующей записи
if(locClient.connectToServer('pipeName'))
    post.log("i", "Client connected to pipe://" + locClient.clientInfo().serverName);
else
    post.log("e", "Client not connected");

void locClient.closeConnection() Функция

разъеденить соединение

locClient.closeConnection();

bool locClient.isWork() Функция

bool locClient.isOpen() Функция синоним

Статус соединения

if(locClient.isWork())
{
    locClient.closeConnection();
}

bool locClient.waitForReadyRead(int ms) Функция

Ожидание поступления данных


bool locClient.waitForReadyLine(int ms) Функция

Ожидание поступления строки


void locClient.clientInfo() Функция
Информация о соединении ввиде объекта

post.log('w', 'cli: '+JSON.stringify(locClient.clientInfo()) );