You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
Перенос сервера в другую репу
This commit is contained in:
@@ -105,10 +105,6 @@
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Таймаут);
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(МаксимальныйРазмер);
|
||||
|
||||
Если ТипЗнч(Соединение) = Тип("Строка") Тогда
|
||||
Соединение = ОткрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(Маркер) = Тип("Строка") Тогда
|
||||
Маркер = ПолучитьДвоичныеДанныеИзСтроки(Маркер);
|
||||
Иначе
|
||||
@@ -161,10 +157,6 @@
|
||||
// Булево - Признак успешного выполнения
|
||||
Функция ОтправитьДвоичныеДанные(Знач Соединение, Знач Данные, Знач Таймаут = 5000) Экспорт
|
||||
|
||||
Если ТипЗнч(Соединение) = Тип("Строка") Тогда
|
||||
Соединение = ОткрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные);
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Таймаут);
|
||||
|
||||
@@ -236,272 +228,6 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область МетодыСервера
|
||||
|
||||
// Создать сервер !NOCLI
|
||||
// Создает новый TCP сервер и устаналивает порт
|
||||
//
|
||||
// Параметры:
|
||||
// Порт - Число - Номер свободного порта для сервера - port
|
||||
// Запустить - Булево - Истина > сразу запускает созданный сервер - start
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - Возвращает объект запущенного TCP сервера при успешном создании или структуру с описанием ошибки
|
||||
Функция СоздатьСервер(Знач Порт, Запустить = Ложь) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Порт);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Запустить);
|
||||
|
||||
TCPСервер = ПодключитьКомпонентуНаСервере("OPI_TCPServer", "Server");
|
||||
TCPСервер.Port = Порт;
|
||||
|
||||
Если Запустить Тогда
|
||||
Результат = ЗапуститьСервер(TCPСервер);
|
||||
|
||||
Успех = Неопределено;
|
||||
ЕстьПризнак = OPI_Инструменты.ПолеКоллекцииСуществует(Результат, "result", Успех);
|
||||
Успех = ?(ЕстьПризнак, Успех, Ложь);
|
||||
|
||||
Возврат ?(Успех, TCPСервер, Результат);
|
||||
|
||||
Иначе
|
||||
Возврат TCPСервер;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Запустить сервер !NOCLI
|
||||
// Запускает ранее созданный сервер
|
||||
//
|
||||
// Параметры:
|
||||
// TCPСервер - Произвольный - TCP сервер. См. СоздатьСервер - srv
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Структура с информацией об успешности запуска
|
||||
Функция ЗапуститьСервер(Знач TCPСервер) Экспорт
|
||||
|
||||
Если Не ЭтоСервер(TCPСервер) Тогда
|
||||
ВызватьИсключение "Переданное значение не является TCP-сервером!";
|
||||
КонецЕсли;
|
||||
|
||||
Результат = TCPСервер.Start();
|
||||
|
||||
ОбработатьРезультат(Результат);
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Отключить сервер !NOCLI
|
||||
// Останавливает запущенный сервер
|
||||
//
|
||||
// Параметры:
|
||||
// TCPСервер - Произвольный - TCP сервер. См. СоздатьСервер - srv
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Информация о выполнении
|
||||
Функция ОтключитьСервер(Знач TCPСервер) Экспорт
|
||||
|
||||
Если Не ЭтоСервер(TCPСервер) Тогда
|
||||
ВызватьИсключение "Переданное значение не является TCP-сервером!";
|
||||
КонецЕсли;
|
||||
|
||||
Результат = TCPСервер.Stop();
|
||||
|
||||
ОбработатьРезультат(Результат);
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Ожидать входящие соединения !NOCLI
|
||||
// Блокирует выполнение программы до появления нового подключения
|
||||
//
|
||||
// Параметры:
|
||||
// TCPСервер - Произвольный - TCP сервер. См. СоздатьСервер - srv
|
||||
// Таймаут - Число - Максимальное время ожидания подключений. 0 > бесконечно - timeout
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Структура с идентификатором нового подключения или ошибкой
|
||||
Функция ОжидатьВходящиеСоединения(Знач TCPСервер, Знач Таймаут = 0) Экспорт
|
||||
|
||||
Если Не ЭтоСервер(TCPСервер) Тогда
|
||||
ВызватьИсключение "Переданное значение не является TCP-сервером!";
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Таймаут);
|
||||
|
||||
Результат = TCPСервер.Wait(Таймаут);
|
||||
|
||||
ОбработатьРезультат(Результат);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить входящие соединения !NOCLI
|
||||
// Получает список соединений в пуле
|
||||
//
|
||||
// Примечание:
|
||||
// Наличие соединения в пуле не гарантирует его активности.^^
|
||||
// Для очистки пула от неактивных соединений используется функция АктуализироватьВходящиеСоединения
|
||||
//
|
||||
// Параметры:
|
||||
// TCPСервер - Произвольный - TCP сервер. См. СоздатьСервер - srv
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Информация о выполнении
|
||||
Функция ПолучитьВходящиеСоединения(Знач TCPСервер) Экспорт
|
||||
|
||||
Если Не ЭтоСервер(TCPСервер) Тогда
|
||||
ВызватьИсключение "Переданное значение не является TCP-сервером!";
|
||||
КонецЕсли;
|
||||
|
||||
Результат = TCPСервер.ListConnections();
|
||||
|
||||
ОбработатьРезультат(Результат);
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Актуализировать входящие соединения !NOCLI
|
||||
// Удаляет неактивные соединения из пула
|
||||
//
|
||||
// Параметры:
|
||||
// TCPСервер - Произвольный - TCP сервер. См. СоздатьСервер - srv
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Информация о выполнении
|
||||
Функция АктуализироватьВходящиеСоединения(Знач TCPСервер) Экспорт
|
||||
|
||||
Если Не ЭтоСервер(TCPСервер) Тогда
|
||||
ВызватьИсключение "Переданное значение не является TCP-сервером!";
|
||||
КонецЕсли;
|
||||
|
||||
Результат = TCPСервер.UpdateConnections();
|
||||
|
||||
ОбработатьРезультат(Результат);
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Это сервер !NOCLI
|
||||
// Определяет, является ли переданное значение объектом TCP сервера
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - Произвольный - произвольное значение для проверки - value
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Это сервер
|
||||
Функция ЭтоСервер(Знач Значение) Экспорт
|
||||
|
||||
Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_TCPServer.Server";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область МетодыОбработкиСоединений
|
||||
|
||||
// Получить запрос !NOCLI
|
||||
// Получает данные из потока существующего соединения
|
||||
//
|
||||
// Параметры:
|
||||
// IDПодключения - Строка, Число - ID активного подключения. См. ОжидатьПодключение - conn
|
||||
// МаксимальныйРазмер - Число - Максимальный размер данных. 0 > до конца потока - maxsize
|
||||
// TCPОбработчик - Произвольный - TCP сервер или пустое значение при обособленной обоработке - hnd
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, ДвоичныеДанные - Двоичные данные при успехе или структура с описанием ошибки
|
||||
Функция ПолучитьЗапрос(Знач IDПодключения, Знач МаксимальныйРазмер = 0, Знач TCPОбработчик = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПодключения);
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(МаксимальныйРазмер);
|
||||
|
||||
Если Не ЭтоСерверИлиОбработчик(TCPОбработчик) Тогда
|
||||
TCPОбработчик = ПодключитьКомпонентуНаСервере("OPI_TCPServer", "Handler");
|
||||
КонецЕсли;
|
||||
|
||||
Данные = TCPОбработчик.Receive(IDПодключения, МаксимальныйРазмер);
|
||||
|
||||
Если ТипЗнч(Данные) = Тип("Строка") Тогда
|
||||
Попытка
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Данные, Ложь);
|
||||
Исключение
|
||||
Результат = Новый Структура("result,error", Ложь, Данные);
|
||||
КонецПопытки;
|
||||
|
||||
Иначе
|
||||
Результат = Данные;
|
||||
КонецЕсли;
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Отправить ответ !NOCLI
|
||||
// Отправляет данные клиенту по идентификатору подключения
|
||||
//
|
||||
// Параметры:
|
||||
// IDПодключения - Строка, Число - ID активного подключения. См. ОжидатьПодключение - conn
|
||||
// Данные - ДвоичныеДанные - Данные для отправки - data
|
||||
// TCPОбработчик - Произвольный - TCP сервер или пустое значение при обособленной обоработке - hnd
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Информация о выполнении
|
||||
Функция ОтправитьОтвет(Знач IDПодключения, Знач Данные, Знач TCPОбработчик = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПодключения);
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные);
|
||||
|
||||
Если Не ЭтоСерверИлиОбработчик(TCPОбработчик) Тогда
|
||||
TCPОбработчик = ПодключитьКомпонентуНаСервере("OPI_TCPServer", "Handler");
|
||||
КонецЕсли;
|
||||
|
||||
Результат = TCPОбработчик.Send(IDПодключения, Данные);
|
||||
|
||||
ОбработатьРезультат(Результат);
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Закрыть входящее соединение !NOCLI
|
||||
// Закрывает существующее соединение по идентификатору
|
||||
//
|
||||
// Параметры:
|
||||
// IDПодключения - Строка, Число - ID активного подключения. См. ОжидатьПодключение - conn
|
||||
// TCPОбработчик - Произвольный - TCP сервер или пустое значение при обособленной обоработке - hnd
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Информация о выполнении
|
||||
Функция ЗакрытьВходящееСоединение(Знач IDПодключения, Знач TCPОбработчик = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПодключения);
|
||||
|
||||
Если Не ЭтоСерверИлиОбработчик(TCPОбработчик) Тогда
|
||||
TCPОбработчик = ПодключитьКомпонентуНаСервере("OPI_TCPServer", "Handler");
|
||||
КонецЕсли;
|
||||
|
||||
Результат = TCPОбработчик.Close(IDПодключения);
|
||||
|
||||
ОбработатьРезультат(Результат);
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@@ -521,21 +247,4 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоСерверИлиОбработчик(Знач Значение)
|
||||
|
||||
Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_TCPServer.Server"
|
||||
Или Строка(ТипЗнч(Значение)) = "AddIn.OPI_TCPServer.Handler";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ОбработатьРезультат(Результат)
|
||||
|
||||
Попытка
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь);
|
||||
Исключение
|
||||
Результат = Новый Структура("result,error", Ложь, Результат);
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
#КонецОбласти
|
@@ -268,7 +268,6 @@
|
||||
НовыйТест(ТаблицаТестов, "AWS_РаботаСБакетами" , "Работа с бакетами" , S3_);
|
||||
НовыйТест(ТаблицаТестов, "AWS_РаботаСОбъектами" , "Работа с объектами" , S3_);
|
||||
НовыйТест(ТаблицаТестов, "TC_Клиент" , "TCP Клиент" , TCP);
|
||||
НовыйТест(ТаблицаТестов, "TC_Сервер" , "TCP Сервер" , TCP);
|
||||
НовыйТест(ТаблицаТестов, "SQLL_ОсновныеМетоды" , "Основные методы" , SQLite);
|
||||
НовыйТест(ТаблицаТестов, "SQLL_ORM" , "ORM" , SQLite);
|
||||
|
||||
|
@@ -2241,14 +2241,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура TC_Сервер() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
|
||||
TCP_ОжидатьВходящиеСоединения(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область SQLite
|
||||
@@ -16454,93 +16446,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура TCP_ОжидатьВходящиеСоединения(ПараметрыФункции) Экспорт
|
||||
|
||||
// -- Тестовый запрос для сервера
|
||||
|
||||
КлючКлиента = Новый УникальныйИдентификатор;
|
||||
Сообщение = "Тестовая отправка данных на сервер";
|
||||
|
||||
ПараметрыКлиента = Новый Массив;
|
||||
ПараметрыКлиента.Добавить("127.0.0.1:7788"); // Наш сервер
|
||||
ПараметрыКлиента.Добавить(Сообщение); // Тестовая строка
|
||||
ПараметрыКлиента.Добавить("UTF-8"); // Кодировка
|
||||
ПараметрыКлиента.Добавить("20000"); // Таймаут, чтобы успеть запустить сервер
|
||||
|
||||
// Отправка тестового запроса через клиентские методы TCP
|
||||
ФоновоеКлиента = ФоновыеЗадания.Выполнить("OPI_TCP.ОтправитьСтроку", ПараметрыКлиента, КлючКлиента);
|
||||
|
||||
// --
|
||||
|
||||
TCPСервер = OPI_TCP.СоздатьСервер(7788, Истина);
|
||||
|
||||
НовоеПодключение = OPI_TCP.ОжидатьВходящиеСоединения(TCPСервер, 20);
|
||||
|
||||
Если НовоеПодключение["result"] Тогда
|
||||
|
||||
Подключение = НовоеПодключение["connection"]["id"];
|
||||
|
||||
МассивПараметровОбработки = Новый Массив;
|
||||
МассивПараметровОбработки.Добавить(Подключение); // Строка: "1:7788"
|
||||
|
||||
ФоновоеОбработки = ФоновыеЗадания.Выполнить("OPI_Тесты.TCP_ОбработатьПодключение", МассивПараметровОбработки);
|
||||
|
||||
TCP_ОбработатьПодключение(Подключение);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Отключение = OPI_TCP.ОтключитьСервер(TCPСервер);
|
||||
|
||||
// END
|
||||
|
||||
ЗаданиеКлиента = ФоновоеКлиента.ОжидатьЗавершенияВыполнения();
|
||||
ЗаданиеОбработки = ФоновоеОбработки.ОжидатьЗавершенияВыполнения();
|
||||
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(TCPСервер, "ОжидатьВходящиеСоединения (сервер)", "TCP");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Компонента(TCPСервер, "AddIn.OPI_TCPServer.Server");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(НовоеПодключение, "ОжидатьВходящиеСоединения", "TCP");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(НовоеПодключение);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Подключение, "ОжидатьВходящиеСоединения (подключение)", "TCP");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Строка(Подключение, "7788:1");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Отключение, "ОжидатьВходящиеСоединения (отключение)", "TCP");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Отключение);
|
||||
|
||||
Состояние = Строка(ЗаданиеКлиента.Состояние);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Состояние, "ОжидатьВходящиеСоединения (фоновое)", "TCP");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Строка(Состояние, "Задание выполнено");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура TCP_ОбработатьПодключение(Подключение) Экспорт
|
||||
|
||||
// Подключение - Строка: "1:7788"
|
||||
|
||||
ЗапросДвочиные = OPI_TCP.ПолучитьЗапрос(Подключение);
|
||||
ЗапросТекст = ПолучитьСтрокуИзДвоичныхДанных(ЗапросДвочиные);
|
||||
|
||||
ОтправкаОтвета = OPI_TCP.ОтправитьОтвет(Подключение, ПолучитьДвоичныеДанныеИзСтроки("Yo"));
|
||||
ЗакрытиеПодключения = OPI_TCP.ЗакрытьВходящееСоединение(Подключение);
|
||||
|
||||
// END
|
||||
|
||||
Сообщение = "Тестовая отправка данных на сервер";
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Сообщение, "ОжидатьВходящиеСоединения (сообщение)", "TCP");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Строка(ЗапросТекст, Сообщение);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(ОтправкаОтвета, "ОжидатьВходящиеСоединения (ответ)", "TCP");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(ОтправкаОтвета);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(ЗакрытиеПодключения, "ОжидатьВходящиеСоединения (закрытие)", "TCP");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(ЗакрытиеПодключения);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область SQLite
|
||||
|
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="4c9ebab6-8e20-4690-b509-2e32b293ad76">
|
||||
<name>OPI_TCPServer</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>TCPServer</value>
|
||||
</synonym>
|
||||
<synonym>
|
||||
<key></key>
|
||||
<value>OPI TCPServer</value>
|
||||
</synonym>
|
||||
<templateType>AddIn</templateType>
|
||||
</mdclass:CommonTemplate>
|
Binary file not shown.
@@ -40,7 +40,6 @@
|
||||
</configurationInformationAddress>
|
||||
<subsystems>Subsystem.OPI_Интеграция</subsystems>
|
||||
<commonTemplates>CommonTemplate.OPI_TCPClient</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.OPI_TCPServer</commonTemplates>
|
||||
<commonTemplates>CommonTemplate.OPI_SQLite</commonTemplates>
|
||||
<commonModules>CommonModule.OPI_Airtable</commonModules>
|
||||
<commonModules>CommonModule.OPI_Bitrix24</commonModules>
|
||||
|
Reference in New Issue
Block a user