/*- * Copyright (c) 2017-2021 Carsten Sonne Larsen * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef MESSAGE_H_INCLUDED #define MESSAGE_H_INCLUDED #include "config.h" #include "log.h" #define LOGGER_PORT_NAME "TimeLoggerIn" #define CONTROL_PORT_NAME "TimeKeeperCtrl" #define AREXX_PORT_NAME "TIMEKEEPER.1" #define AREXX_ERROR_VAR_CODE "TIMEKEEPER.ERRORCODE" #define AREXX_ERROR_VAR_TEXT "TIMEKEEPER.ERRORTEXT" #define ATK_DEFAULT 0 #define ATK_LASTSYNC 1 #define ATK_RESTART 10 #define ATK_REFRESH 11 #define ATK_STORE 13 #define ATK_APPLY 14 #define ATK_UNDO 15 #define ATK_SHOW 16 #define ATK_HIDE 17 #define ATK_ENABLE 20 #define ATK_DISABLE 21 #define ATK_READONLY 22 #define ATK_READWRITE 23 #define ATK_SHUTDOWN 30 #define ATK_TZ_CHANGED 40 #define ATK_TZONE_CHANGED 41 #define ATK_LOCALE_CHANGED 42 #define ATK_ID 50 #define ATK_VERSION 51 #define ATK_STATUS 52 #define ATK_TIME 53 #define ATK_TIMEZONE 54 #define ATK_CTRL_OK 0 #define ATK_CTRL_ERROR 10 #define ATK_CTRL_UNKNOWN 255 #define MODULENAMESIZE 20 #define MAXLOGLINESIZE 100 #define MSGPORT_BROKER 1 #define MSGPORT_SYNCER 2 #define MSGPORT_WINDOW 3 #define MSGPORT_MEMORY 4 #define MSGPORT_CONTROL 5 #define MSGPORT_AREXX 6 #define MSGTYPE_APP 1 #define MSGTYPE_LOG 2 #define MSGTYPE_CTRL 3 struct ApplicationMesage { struct Message Msg; long MsgType; long MsgId; }; struct ControlMesage { struct ApplicationMesage AppMsg; STRPTR Args; STRPTR Result; long Code; }; enum LogSeverity { ErrorMessage = 5, WarningMessage = 10, NoticeMessage = 15, InfoMessage = 20, DebugMessage = 30, TraceMessage = 40, MemTraceMessage = 90 }; struct LogMessage { struct ApplicationMesage AppMsg; enum LogSeverity Severity; char Module[MODULENAMESIZE]; char Text[MAXLOGLINESIZE]; }; void InitMessages(void); bool SetupPorts(void); void CleanupPorts(void); bool CreateMessagePort(long port); void DestroyMessagePort(long port); ULONG GetPortSignalMask(long); struct MsgPort *GetMessagePort(long); struct Message *GetNewMessage(long); void SendBrokerMessage(long); void SendWindowMessage(long); void SendLogMessage(struct LogMessage *); void SendMessageWait(long, long); void HandleMemoryMessages(void); void CleanupMsgPort(struct MsgPort **); #endif