Kernel/VTerm - "Fix" wrapping issue in VTerm (why was old behavior there?)
[tpg/acess2.git] / Usermode / Applications / axwin4_src / Server / CClient.cpp
index 6f1f256..6c9fe68 100644 (file)
@@ -6,33 +6,58 @@
  * - IPC Client
  */
 #include <CClient.hpp>
+#include <IIPCChannel.hpp>
+#include <ipc.hpp>
 
 namespace AxWin {
 
-CClient::CClient(IIPCChannel& channel):
+CClient::CClient(::AxWin::IIPCChannel& channel):
        m_channel(channel)
 {
        
 }
 
+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)
 {
+       _SysDebug("SetWindow(ID=%i,window=%p)", ID, window);
        if( m_windows[ID] ) {
                delete m_windows[ID];
        }
        m_windows[ID] = window;
 }
 
-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

UCC git Repository :: git.ucc.asn.au