1
+ // BSLLS:UsingHardcodeNetworkAddress-off
2
+
3
+ #Использовать autumn
4
+ #Использовать winow
5
+
6
+ Перем Поделка ; // Ссылка на объект Поделка (autumn)
7
+ Перем ВебСервер ; // Ссылка на объект ПрикладнойВебСервер (winow)
8
+ Перем НастройкиВебСервера ; // Ссылка на объект Настройки (winow)
9
+ Перем СлушательПорта ; // Ссылка на объект СлушательПорта (winow)
10
+
11
+ Перем ЗапускатьВФоне ; // Булево
12
+ Перем ОжидатьИнициализацию ; // Булево
13
+
14
+ #Область ПрограммныйИнтерфейс
15
+
16
+ // Запускает сервис
17
+ //
18
+ // Возвращаемое значение:
19
+ // ЭтотОбъект
20
+ Функция Запустить () Экспорт
21
+ Если ЗапускатьВФоне Тогда
22
+ ФоновыеЗадания .Выполнить(ВебСервер, "Старт" );
23
+
24
+ Если ОжидатьИнициализацию Тогда
25
+ ОжидатьЗапуск();
26
+ КонецЕсли ;
27
+ Иначе
28
+ ВебСервер.Старт();
29
+ КонецЕсли ;
30
+ Возврат ЭтотОбъект;
31
+ КонецФункции
32
+
33
+ // Останавливает сервис
34
+ //
35
+ // Возвращаемое значение:
36
+ // ЭтотОбъект
37
+ Функция Остановить () Экспорт
38
+ ВебСервер.Стоп();
39
+ Возврат ЭтотОбъект;
40
+ КонецФункции
41
+
42
+ // Устанавливает порт сервиса
43
+ //
44
+ // Параметры:
45
+ // Порт - Число - Номер порта
46
+ //
47
+ // Возвращаемое значение:
48
+ // ЭтотОбъект
49
+ Функция УстановитьПорт (Порт ) Экспорт
50
+ НастройкиВебСервера.Порт = Порт;
51
+ Возврат ЭтотОбъект;
52
+ КонецФункции
53
+
54
+ // Устанавливает хост сервиса
55
+ //
56
+ // Параметры:
57
+ // Хост - Строка - Имя хоста / ip адрес
58
+ //
59
+ // Возвращаемое значение:
60
+ // ЭтотОбъект
61
+ Функция УстановитьХост (Хост ) Экспорт
62
+ НастройкиВебСервера.ИмяХоста = Хост;
63
+ Возврат ЭтотОбъект;
64
+ КонецФункции
65
+
66
+ // Запуск сервиса будет выполнен в фоновом режиме
67
+ //
68
+ // Параметры:
69
+ // Флаг - Булево
70
+ //
71
+ // Возвращаемое значение:
72
+ // ЭтотОбъект
73
+ Функция ЗапускатьВФоне (Флаг = Истина ) Экспорт
74
+ ЗапускатьВФоне = Флаг;
75
+ Возврат ЭтотОбъект;
76
+ КонецФункции
77
+
78
+ // Ожидать инициализацию сервиса, запущенный в фоновом режиме
79
+ //
80
+ // Параметры:
81
+ // Флаг - Булево
82
+ //
83
+ // Возвращаемое значение:
84
+ // ЭтотОбъект
85
+ Функция ОжидатьИнициализацию (Флаг = Истина ) Экспорт
86
+ ОжидатьИнициализацию = Флаг;
87
+ Возврат ЭтотОбъект;
88
+ КонецФункции
89
+
90
+ // Устанавливает задержку перед чтением сокета
91
+ //
92
+ // Параметры:
93
+ // Задержка - Число - Задержка в миллисекундах (По умолчанию 65 мс)
94
+ Процедура УстановитьЗадержкуПередЧтениемСокета (Задержка ) Экспорт
95
+ НастройкиВебСервера.ЗадержкаПередЧтениемСокета = Задержка;
96
+ КонецПроцедуры
97
+
98
+ #КонецОбласти
99
+
100
+ #Область СлужебныеПроцедурыИФункции
101
+
102
+ // Cервис тестирования HTTP клиента.
103
+ // По умолчанию сервис запускается фоновым заданием и с ожиданием инициализации сервиса.
104
+ // Адрес по умолчанию - 127.0.0.1:3334
105
+ //
106
+ // Параметры:
107
+ // ПоделкаОсени - Объект - Ссылка на объект Поделка (autumn)
108
+ &Желудь
109
+ &Характер ("Компанейский" )
110
+ Процедура ПриСозданииОбъекта (&Пластилин ("Поделка" ) ПоделкаОсени = Неопределено )
111
+
112
+ Если ПоделкаОсени = Неопределено Тогда
113
+ Поделка = Новый Поделка;
114
+ Поделка.ЗапуститьПриложение();
115
+ Иначе
116
+ Поделка = ПоделкаОсени;
117
+ КонецЕсли ;
118
+
119
+ ВебСервер = Поделка.НайтиЖелудь("ВебСервер" );
120
+ НастройкиВебСервера = Поделка.НайтиЖелудь("Настройки" );
121
+ СлушательПорта = Поделка.НайтиЖелудь("СлушательПорта" );
122
+
123
+ НастройкиВебСервера.РазмерБуфера = 0 ;
124
+
125
+ УстановитьХост("127.0.0.1" );
126
+ УстановитьПорт(3334 );
127
+ УстановитьЗадержкуПередЧтениемСокета(65 );
128
+ ЗапускатьВФоне ();
129
+ ОжидатьИнициализацию();
130
+
131
+ КонецПроцедуры
132
+
133
+ Процедура ОжидатьЗапуск ()
134
+
135
+ Задержка = 100 ;
136
+ МаксКоличествоИтераций = 10 ;
137
+ НомерИтерации = 0 ;
138
+
139
+ Пока Не СлушательПорта.Активен() Цикл
140
+ НомерИтерации = НомерИтерации + 1 ;
141
+ Приостановить(Задержка);
142
+
143
+ Если НомерИтерации = МаксКоличествоИтераций Тогда
144
+ Остановить();
145
+ ВызватьИсключение СтрШаблон (
146
+ "Не удалось запустить веб-сервер по адресу %1:%2 в течение %3 мс." ,
147
+ НастройкиВебСервера.ИмяХоста,
148
+ НастройкиВебСервера.Порт,
149
+ Задержка * МаксКоличествоИтераций);
150
+ КонецЕсли ;
151
+ КонецЦикла ;
152
+
153
+ КонецПроцедуры
154
+
155
+ #КонецОбласти
0 commit comments