- 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
101 lines
4.4 KiB
C++
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
|