mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-19 06:20:44 -04:00
Added Multiple Channels and Event support to RPC system.
* added chan_id parameter to many RPC calls, this allows RPC to support multiple SSH clients. - the combination of (chan_id, req_id) rather than req_id, should be unique now -> TODO inside rpcserver queued requests. * Modified SSH server to match the new API. Multiple client support has not been added here yet. * Modified Menu System to match these changes too. * Added an Registration Framework to RpcQueueService, to enable easy event support. This code has not been throughly tested yet. git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5500 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
46c945de96
commit
9c2f7f39e7
17 changed files with 435 additions and 117 deletions
|
@ -25,6 +25,7 @@
|
|||
#ifndef RS_RPC_SYSTEM_H
|
||||
#define RS_RPC_SYSTEM_H
|
||||
|
||||
#include <list>
|
||||
#include <string>
|
||||
#include <inttypes.h>
|
||||
|
||||
|
@ -32,18 +33,20 @@ class RpcComms
|
|||
{
|
||||
public:
|
||||
virtual int isOkay() = 0;
|
||||
virtual int error(std::string msg) = 0;
|
||||
virtual int error(uint32_t chan_id, std::string msg) = 0;
|
||||
|
||||
virtual int recv_ready() = 0;
|
||||
virtual int recv(uint8_t *buffer, int bytes) = 0;
|
||||
virtual int recv(std::string &buffer, int bytes) = 0;
|
||||
virtual int active_channels(std::list<uint32_t> &chan_ids) = 0;
|
||||
|
||||
virtual int recv_ready(uint32_t chan_id) = 0;
|
||||
virtual int recv(uint32_t chan_id, uint8_t *buffer, int bytes) = 0;
|
||||
virtual int recv(uint32_t chan_id, std::string &buffer, int bytes) = 0;
|
||||
|
||||
// these make it easier...
|
||||
virtual int recv_blocking(uint8_t *buffer, int bytes) = 0;
|
||||
virtual int recv_blocking(std::string &buffer, int bytes) = 0;
|
||||
virtual int recv_blocking(uint32_t chan_id, uint8_t *buffer, int bytes) = 0;
|
||||
virtual int recv_blocking(uint32_t chan_id, std::string &buffer, int bytes) = 0;
|
||||
|
||||
virtual int send(uint8_t *buffer, int bytes) = 0;
|
||||
virtual int send(const std::string &buffer) = 0;
|
||||
virtual int send(uint32_t chan_id, uint8_t *buffer, int bytes) = 0;
|
||||
virtual int send(uint32_t chan_id, const std::string &buffer) = 0;
|
||||
|
||||
virtual int setSleepPeriods(float /* busy */, float /* idle */) { return 0; }
|
||||
};
|
||||
|
@ -53,7 +56,7 @@ class RpcSystem
|
|||
{
|
||||
public:
|
||||
/* this must be regularly ticked to update the display */
|
||||
virtual void reset() = 0;
|
||||
virtual void reset(uint32_t chan_id) = 0;
|
||||
virtual int tick() = 0;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue