legatt 32f4597c4d Base frontend module
- Naming style migrated to camel-case
- P7lib logger sources added
- Vcpkg manifest, CMake presets and build moved to root
- SDL2, Vulkan and RmlUi dependencies added
- Logger LOG macro added
- Logger  configuration
- SDL2 window configuration
- Vulkan configuration
- RmlUi configuration
- SDL event loop
2025-08-08 00:07:32 +03:00

101 lines
4.4 KiB
C++

////////////////////////////////////////////////////////////////////////////////
// /
// 2012-2020 (c) Baical /
// /
// This library is free software; you can redistribute it and/or /
// modify it under the terms of the GNU Lesser General Public /
// License as published by the Free Software Foundation; either /
// version 3.0 of the License, or (at your option) any later version. /
// /
// This library is distributed in the hope that it will be useful, /
// but WITHOUT ANY WARRANTY; without even the implied warranty of /
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU /
// Lesser General Public License for more details. /
// /
// You should have received a copy of the GNU Lesser General Public /
// License along with this library. /
// /
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// This header file provide base client functionality /
////////////////////////////////////////////////////////////////////////////////
#ifndef CLIENT_H
#define CLIENT_H
tXCHAR *Get_Argument_Text_Value(tXCHAR **i_pArgs,
tINT32 i_iCount,
const tXCHAR *i_pName
);
////////////////////////////////////////////////////////////////////////////////
//CClient
class CClient:
public IP7_Client
{
protected:
//put volatile variables at the top, to obtain 32 bit alignment.
//Project has 8 bytes alignment by default
tINT32 volatile m_lReference;
volatile eClient_Status m_eStatus;
tLOCK m_hCS_Reg;
tLOCK m_hCS;
IP7C_Channel *m_pChannels[USER_PACKET_CHANNEL_ID_MAX_SIZE];
CShared::hShared m_hShared;
tBOOL m_bCrashMem;
IJournal *m_pLog;
tBOOL m_bConnected;
tUINT32 m_dwConnection_Resets;
IP7_Client::eType m_eType;
tXCHAR **m_pArgs;
tINT32 m_iArgsCnt;
volatile tBOOL m_bFlushChannels;
public:
CClient(IP7_Client::eType i_eType,
tXCHAR **i_pArgs,
tINT32 i_iCount
);
virtual ~CClient();
public:
virtual IP7_Client::eType Get_Type();
virtual tINT32 Add_Ref();
virtual tINT32 Release();
virtual eClient_Status Get_Status();
virtual tBOOL Get_Status(sP7C_Status *o_pStatus);
//virtual tBOOL Get_Info(sP7C_Info *o_pInfo);
virtual eClient_Status Register_Channel(IP7C_Channel *i_pChannel);
virtual eClient_Status Unregister_Channel(tUINT32 i_dwID);
//virtual eClient_Status Sent(tUINT32 i_dwChannel_ID,
// sP7C_Data_Chunk *i_pChunks,
// tUINT32 i_dwCount,
// tUINT32 i_dwSize);
virtual tBOOL Share(const tXCHAR *i_pName);
virtual const tXCHAR *Get_Argument(const tXCHAR *i_pName);
virtual size_t Get_Channels_Count();
virtual IP7C_Channel *Get_Channel(size_t i_szIndex);
virtual tBOOL Unshare();
//reimplemented in childes, will be called in case of process crash
virtual tBOOL Close() = 0;
protected:
eClient_Status Init_Log(tXCHAR **i_pArgs, tINT32 i_iCount);
eClient_Status Init_Crash_Handler(tXCHAR **i_pArgs, tINT32 i_iCount);
eClient_Status Uninit_Crash_Handler();
};
#endif //CLIENT_H