diff options
author | Jason Sams <rjsams@android.com> | 2011-05-17 15:01:29 -0700 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2011-05-17 15:01:29 -0700 |
commit | 1a4efa363916977ef9aeab756725b3bdc880a15b (patch) | |
tree | 3cf1cf28119b8a19d95654e1701868b5941b5365 /rsThreadIO.h | |
parent | 9003e5674fb3b2a1442cd0cca899fdc3246debf8 (diff) | |
download | rs-1a4efa363916977ef9aeab756725b3bdc880a15b.tar.gz |
Core to client fifo on sockets.
Change-Id: I3b84a7d4c3c5fa0d764ad4db22dfd142d5cfa95b
Diffstat (limited to 'rsThreadIO.h')
-rw-r--r-- | rsThreadIO.h | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/rsThreadIO.h b/rsThreadIO.h index f9d0de74..cad73186 100644 --- a/rsThreadIO.h +++ b/rsThreadIO.h @@ -19,6 +19,7 @@ #include "rsUtils.h" #include "rsLocklessFifo.h" +#include "rsFifoSocket.h" // --------------------------------------------------------------------------- namespace android { @@ -31,17 +32,58 @@ public: ThreadIO(); ~ThreadIO(); + void init(bool useSocket = false); void shutdown(); // Plays back commands from the client. // Returns true if any commands were processed. bool playCoreCommands(Context *con, bool waitForCommand); + //LocklessCommandFifo mToCore; - LocklessCommandFifo mToCore; + + + void coreFlush(); + void * coreHeader(uint32_t, size_t dataLen); + void coreData(const void *data, size_t dataLen); + void coreCommit(); + void coreCommitSync(); + void coreSetReturn(const void *data, size_t dataLen); + void coreGetReturn(void *data, size_t dataLen); + + + RsMessageToClientType getClientHeader(size_t *receiveLen, uint32_t *usrID); + RsMessageToClientType getClientPayload(void *data, size_t *receiveLen, uint32_t *subID, size_t bufferLen); + bool sendToClient(RsMessageToClientType cmdID, uint32_t usrID, const void *data, size_t dataLen, bool waitForSpace); + void clientShutdown(); + + +protected: + typedef struct CoreCmdHeaderRec { + uint32_t cmdID; + uint32_t bytes; + } CoreCmdHeader; + typedef struct ClientCmdHeaderRec { + uint32_t cmdID; + uint32_t bytes; + uint32_t userID; + } ClientCmdHeader; + ClientCmdHeader mLastClientHeader; + + size_t mCoreCommandSize; + uint32_t mCoreCommandID; + uint8_t * mCoreDataPtr; + uint8_t * mCoreDataBasePtr; + + bool mUsingSocket; LocklessCommandFifo mToClient; + LocklessCommandFifo mToCore; + + FifoSocket mToClientSocket; + FifoSocket mToCoreSocket; intptr_t mToCoreRet; + }; |