X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin4_src%2FServer%2FCClient.cpp;h=2abcb9b5ed2714e4ca3e3b9b2bb839dfea684a3c;hb=ba78deafcc3016555469ed263d7a0370fa99db4b;hp=6f1f2562aaa89998b194b3168255b5b417ba6142;hpb=340e7923b1e95c39ac85a4b22af7f1b53b315cd9;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin4_src/Server/CClient.cpp b/Usermode/Applications/axwin4_src/Server/CClient.cpp index 6f1f2562..2abcb9b5 100644 --- a/Usermode/Applications/axwin4_src/Server/CClient.cpp +++ b/Usermode/Applications/axwin4_src/Server/CClient.cpp @@ -6,33 +6,73 @@ * - IPC Client */ #include +#include +#include +#include // for the fonts namespace AxWin { -CClient::CClient(IIPCChannel& channel): - m_channel(channel) +CClient::CClient(::AxWin::IIPCChannel& channel): + m_channel(channel), + m_id(0) { } +CClient::~CClient() +{ + ::AxWin::IPC::DeregisterClient(*this); +} + CWindow* CClient::GetWindow(int ID) { - if( ID == 0 ) - return 0; - - return m_windows[ID]; + try { + return m_windows.at(ID); + } + catch(const std::exception& e) { + return NULL; + } } void CClient::SetWindow(int ID, CWindow* window) { - if( m_windows[ID] ) { - delete m_windows[ID]; + //_SysDebug("SetWindow(ID=%i,window=%p)", ID, window); + auto it = m_windows.find(ID); + if( it != m_windows.end() ) { + _SysDebug("CLIENT BUG: Window ID %i is already used by %p", ID, it->second); + } + else { + m_windows[ID] = window; + } +} + +IFontFace& CClient::GetFont(unsigned int id) +{ + static CFontFallback fallback_font; + if( id == 0 ) { + _SysDebug("GetFont: %i = %p", id, &fallback_font); + return fallback_font; } - m_windows[ID] = window; + assert(!"TODO: CClient::GetFont id != 0"); } -void CClient::SendMessage(CSerialiser& reply) +void CClient::HandleMessage(CDeserialiser& message) { + try { + IPC::HandleMessage(*this, message); + if( !message.IsConsumed() ) + { + _SysDebug("NOTICE - CClient::HandleMessage - Trailing data in message"); + } + } + catch( const ::std::exception& e ) + { + _SysDebug("ERROR - Exception while processing message from client: %s", e.what()); + } + catch( ... ) + { + _SysDebug("ERROR - Unknown exception while processing message from client"); + } } }; // namespace AxWin