You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							56 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							56 lines
						
					
					
						
							1.6 KiB
						
					
					
				#pragma once
 | 
						|
#include <cstddef>
 | 
						|
#include <vector>
 | 
						|
#include <string>
 | 
						|
 | 
						|
#define MSG_MULTIPLE_PUBLISHERS 100
 | 
						|
 | 
						|
class Context {
 | 
						|
public:
 | 
						|
  virtual void * getRawContext() = 0;
 | 
						|
  static Context * create();
 | 
						|
  virtual ~Context(){};
 | 
						|
};
 | 
						|
 | 
						|
class Message {
 | 
						|
public:
 | 
						|
  virtual void init(size_t size) = 0;
 | 
						|
  virtual void init(char * data, size_t size) = 0;
 | 
						|
  virtual void close() = 0;
 | 
						|
  virtual size_t getSize() = 0;
 | 
						|
  virtual char * getData() = 0;
 | 
						|
  virtual ~Message(){};
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
class SubSocket {
 | 
						|
public:
 | 
						|
  virtual int connect(Context *context, std::string endpoint, std::string address, bool conflate=false) = 0;
 | 
						|
  virtual void setTimeout(int timeout) = 0;
 | 
						|
  virtual Message *receive(bool non_blocking=false) = 0;
 | 
						|
  virtual void * getRawSocket() = 0;
 | 
						|
  static SubSocket * create();
 | 
						|
  static SubSocket * create(Context * context, std::string endpoint);
 | 
						|
  static SubSocket * create(Context * context, std::string endpoint, std::string address);
 | 
						|
  static SubSocket * create(Context * context, std::string endpoint, std::string address, bool conflate);
 | 
						|
  virtual ~SubSocket(){};
 | 
						|
};
 | 
						|
 | 
						|
class PubSocket {
 | 
						|
public:
 | 
						|
  virtual int connect(Context *context, std::string endpoint) = 0;
 | 
						|
  virtual int sendMessage(Message *message) = 0;
 | 
						|
  virtual int send(char *data, size_t size) = 0;
 | 
						|
  static PubSocket * create();
 | 
						|
  static PubSocket * create(Context * context, std::string endpoint);
 | 
						|
  virtual ~PubSocket(){};
 | 
						|
};
 | 
						|
 | 
						|
class Poller {
 | 
						|
public:
 | 
						|
  virtual void registerSocket(SubSocket *socket) = 0;
 | 
						|
  virtual std::vector<SubSocket*> poll(int timeout) = 0;
 | 
						|
  static Poller * create();
 | 
						|
  static Poller * create(std::vector<SubSocket*> sockets);
 | 
						|
  virtual ~Poller(){};
 | 
						|
};
 | 
						|
 |