OberonCore
https://forum.oberoncore.ru/

Модуль Services & HostMenus
https://forum.oberoncore.ru/viewtopic.php?f=23&t=1963
Страница 1 из 1

Автор:  hothing [ Понедельник, 19 Октябрь, 2009 13:46 ]
Заголовок сообщения:  Модуль Services & HostMenus

Возникла у меня задача написать небольшой сервер. Его задача, принимать данные по сети и сохранять их в БД, абсолютно не требует визуальной формы. Казалось мне: собери свое приложение без использования всего ББ. А вот и нет, не получается. И затык то простой: Services реализуется в HostMenu. А он за собой тащит чуть не весь фреймворк.
Получается надо писать модуль HostApp и в нем реализовывать все необходимые компоненты.

Или я чего-то не понимаю?

ЗЫ А все таки, не хватает в каркасе некого типа\ов Приложение. Как его правильно описать? Есть у кого идеи?

Автор:  Иван Горячев [ Понедельник, 19 Октябрь, 2009 13:56 ]
Заголовок сообщения:  Re: Модуль Services & HostMenus

hothing писал(а):
ЗЫ А все таки, не хватает в каркасе некого типа\ов Приложение. Как его правильно описать? Есть у кого идеи?


Я бы сказал что подсистеме Host не хватает структурированности. И Kernelу пожалуй. Нужно полностью разнести общесистемные вещи и GUI. Тогда и выделение "разных типов приложений" будет не сильно актуально

Автор:  Илья Ермаков [ Понедельник, 19 Октябрь, 2009 16:11 ]
Заголовок сообщения:  Re: Модуль Services & HostMenus

Services абсолютно самодостаточен.

Поставьте в главной процедуре приложения LOOP Services.actionHook.Loop END - и всё. Этот хук порождается прямо внутри Services.

Ну, надо будет разбавить такой жадный цикл WinApi.Sleep(1) "по вкусу" (обычно от нагрузки; если нагрузка есть, то не спим, если пропала, то разбавляем).

Автор:  Trurl [ Понедельник, 19 Октябрь, 2009 16:48 ]
Заголовок сообщения:  Re: Модуль Services & HostMenus

А смысл в таком использовании Services?

Автор:  Илья Ермаков [ Понедельник, 19 Октябрь, 2009 16:50 ]
Заголовок сообщения:  Re: Модуль Services & HostMenus

Ну, я так понимаю, человеку удобно использовать его как карусель задач.

Хотя лучше делать это напрямую.

Автор:  hothing [ Понедельник, 19 Октябрь, 2009 19:36 ]
Заголовок сообщения:  Re: Модуль Services & HostMenus

Илья, спасибо, за емкий ответ. Да, конечно нужно сделать цикл. У меня уже шаблон мышления.

Автор:  Евгений Темиргалеев [ Вторник, 20 Октябрь, 2009 20:05 ]
Заголовок сообщения:  Re: Модуль Services & HostMenus

Реализация Actions через виндовый таймер (Как пример)
Код:
MODULE ...TimerHook;

   IMPORT
      Out := ConsoleOut,
      Services, SYSTEM, W := WinApi;
   
   VAR
      id: INTEGER;

   PROCEDURE TimerProc (hwnd: W.HWND; uMsg, idEvent, dwTimer: INTEGER);
   BEGIN
      Services.actionHook.Step
   END TimerProc;

   PROCEDURE InstallTimer;
   BEGIN
      id := W.SetTimer(0, 0, 1, SYSTEM.VAL(W.TIMERPROC, SYSTEM.ADR(TimerProc)))
   END InstallTimer;
   
   PROCEDURE UninstallTimer;
      VAR   res: INTEGER;
   BEGIN
      IF id # 0 THEN
         res := W.KillTimer(0, id); id := 0
      END
   END UninstallTimer;
   
BEGIN
   InstallTimer;
   IF id = 0 THEN
      Out.Open; Out.String("...TimerHook.InstallTimer failed"); Out.Ln
   END
CLOSE
   UninstallTimer
END ...TimerHook.

Автор:  Александр Ильин [ Вторник, 20 Октябрь, 2009 21:23 ]
Заголовок сообщения:  Re: Модуль Services & HostMenus

Евгений Темиргалеев писал(а):
Реализация Actions через виндовый таймер
Однако, для callback'а надо так:
PROCEDURE [ccall] TimerProc (hwnd: W.HWND; uMsg, idEvent, dwTimer: INTEGER);

Автор:  Илья Ермаков [ Вторник, 20 Октябрь, 2009 21:29 ]
Заголовок сообщения:  Re: Модуль Services & HostMenus

Ни в коем случае, это ж WinApi-callback, а не Юникс и не библиотека какая левая.
Соглашения вызова - WinApi. Как и в ББ.

Автор:  Trurl [ Вторник, 20 Октябрь, 2009 22:09 ]
Заголовок сообщения:  Re: Модуль Services & HostMenus

Все равно цикл надо делать.

Автор:  hothing [ Среда, 21 Октябрь, 2009 00:56 ]
Заголовок сообщения:  Re: Модуль Services & HostMenus

Спасибо всем зА ответы. Много полезного.
Хотя, в моем случае, стараюсь избежать любых ОС-зависимых процедур, т.к. в дальнейшем код должен работать и в других ОС.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/