Usermode/AxWin4 - Screen dimensions acquisition, speedup, window render
[tpg/acess2.git] / Usermode / Libraries / libaxwin4.so_src / ipc_acessipcpipe.cpp
index 09cebca..4b4bc71 100644 (file)
@@ -5,6 +5,7 @@
  * ipc_acessipcpipe.c
  * - Acess2 /Devices/ipcpipe/ IPC Channel
  */
+#include "include/common.hpp"
 #include "include/CIPCChannel_AcessIPCPipe.hpp"
 #include <system_error>
 #include <cerrno>
@@ -33,6 +34,16 @@ bool CIPCChannel_AcessIPCPipe::HandleSelect(const fd_set& fds)
 {
        if( FD_ISSET(m_fd, &fds) )
        {
+               ::std::vector<uint8_t>  rxbuf(4096);
+               size_t len = _SysRead(m_fd, rxbuf.data(), rxbuf.capacity());
+               if( len == (size_t)-1 )
+                       throw ::std::system_error(errno, ::std::system_category());
+               rxbuf.resize(len);
+               _SysDebug("CClient_AcessIPCPipe::HandleReceive - Rx %i/%i bytes", len, rxbuf.capacity());
+               _SysDebugHex("CClient_AcessIPCPipe::HandleReceive", rxbuf.data(), len);
+               
+               CDeserialiser   msg(rxbuf);
+               ::AxWin::RecvMessage( msg );
        }
        return true;
 }
@@ -44,6 +55,8 @@ void CIPCChannel_AcessIPCPipe::Send(CSerialiser& message)
                throw ::std::length_error("CIPCChannel_AcessIPCPipe::Send");
        }
        _SysDebug("CIPCChannel_AcessIPCPipe::Send(%i bytes)", serialised.size());
+       //_SysDebugHex("CIPCChannel_AcessIPCPipe::Send",     serialised.data(), serialised.size());
+       
        size_t rv = _SysWrite(m_fd, serialised.data(), serialised.size());
        if( rv != serialised.size() ) {
                throw ::std::system_error(errno, ::std::system_category());

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