diff --git a/src/connection_unix.cpp b/src/connection_unix.cpp index d35e683..fbf5a23 100644 --- a/src/connection_unix.cpp +++ b/src/connection_unix.cpp @@ -1,13 +1,24 @@ #include "connection.h" +const int RpcVersion = 1; +const int NumFrames = 4; + +struct RpcConnectionUnix : public RpcConnection { + int pipe{-1}; + RpcMessageFrame frames[NumFrames]; + int nextFrame{0}; +}; + /*static*/ RpcConnection* RpcConnection::Create(const char* applicationId) { - return nullptr; + return new RpcConnectionUnix; } -/*static*/ void RpcConnection::Destroy(RpcConnection*&) +/*static*/ void RpcConnection::Destroy(RpcConnection*& c) { - + auto self = reinterpret_cast(c); + delete self; + c = nullptr; } void RpcConnection::Open() @@ -32,7 +43,10 @@ RpcMessageFrame* RpcConnection::Read() RpcMessageFrame* RpcConnection::GetNextFrame() { - return nullptr; + auto self = reinterpret_cast(this); + auto result = &(self->frames[self->nextFrame]); + self->nextFrame = (self->nextFrame + 1) % NumFrames; + return result; } void RpcConnection::WriteFrame(RpcMessageFrame* frame)