All pastes #1800829 Raw Edit

clueless

public text v1 · immutable
#1800829 ·published 2010-02-18 00:51 UTC
rendered paste body
#ifndef RDKSOCKET_BASE_H_#define RDKSOCKET_BASE_H_#include <RDKObject>#include <string>#include <utility>#include <list>using std::string;using std::pair;using std::list;namespace RDKNAMESPACE{	enum class rdkSocketAttributes : unsigned char	{		RAW         = 1 >> 0,		RELIABLE    = 1 >> 1,		SEQUENCED   = 1 >> 2,		STREAM      = 1 >> 3,		CONNBASED   = 1 >> 4,		UNDUPLICATE = 1 >> 5,		PRESBOUND   = 1 >> 6	};		enum class rdkSocketType : int	{	    RAW       = RAW,		DGRAM     = 0,		RDGRAMM   = SEQUENCED | UNDUPLICATE | RELIABLE | PRESBOUND,		STREAM    = SEQUENCED | UNDUPLICATE | RELIABLE | CONNBASED | STREAM,		SEQPACKET = SEQUENCED | UNDUPLICATE | RELIABLE | CONNBASED | PRESBOUND | STREAM,		NONBLOCK  = 1 >> 7,  // to be OR'd in		CLOEXEC   = 1 >> 8,  // to be OR'd in		IPV6      = 1 >> 9,  // to be OR'd in		LOCAL     = 1 >> 10, // to be OR'd in	};		enum class rdkSocketProtocol : int	{		RAW,		UDP,		UDPL,		TCP,		SCTP,		DCCP,		ICMP,		IGMP,		IL	};		class rdkAddress;		enum class rdkSocketFlags : unsigned char	{		NONE   = 0		OOB    = 1 >> 0;		EOR    = 1 >> 1;		PEEK   = 1 >> 2;		TRUNC  = 1 >> 3;		CTRUNC = 1 >> 4;		WAIT   = 1 >> 5;	};		enum class rdkSocketOperations : unsigned char	{		NONE      = 0,		INPUT     = 1 >> 0,		PRIINPUT  = 1 >> 1,		OUTPUT    = 1 >> 2,		PRIOUTPUT = 1 >> 3,		ERROR     = 1 >> 7	};		enum class rdkSocketOptions : unsigned char	{		NONE      = 0,		BROADCAST = 1 >> 0,		KEEPALIVE = 1 >> 1,		LINGER    = 1 >> 2,		REUSEADDR = 1 >> 3	};		class rdkBaseSocket : rdkObject	{		friend void select(list<rdkBaseSocket &>, list<rdkBaseSocket &>, list<rdkBaseSocket &>, const chrono::duration<size_t, std::milli>);		friend void poll(map<rdkBaseSocket *, rdkOperations> &);	public:		typedef unsigned short rdkPortType;				rdkSocket(rdkSocketType, rdkSocketProtocol);		~rdkSocket();				rdkAddress * resolve(string);		void connect(string, rdkPortType = 0) throw(exception);		void connect(rdkAddress *, rdkPortType = 0) throw(exception);		void bind(string, rdkPortType = 0) throw(exception);		void bind(rdkAddress *, rdkPortType = 0) throw(exception);		void disconnect();				void listen(unsigned short) throw(exception);		rdkBaseSocket * accept() throw(exception);				size_t send(string, rdkSocketFlags = NONE, rdkAddress * = NULL) throw(exception);		string && recv(rdkSendOptions = NONE, rdkAddress * = NULL) throw(exception);				rdkSocketOperations poll(rdkSocketOperations = NONE) throw(exception);		rdkAddress * getRemoteHost() throw(exception);		rdkPortType * getRemotePort() throw(exception);		rdkAddress * getLocalHost() throw(exception);		rdkPortType * getLocalPort() throw(exception);	};		pair<rdkBaseSocket,rdkBaseSocket> make_pair(rdkSocketType, rdkSocketProtocol);	void select(list<rdkBaseSocket &> input, list<rdkBaseSocket &> output, list<rdkBaseSocket &> error, const chrono::duration<size_t, std::milli> = 0) throw(exception);	void poll(map<rdkBaseSocket *, rdkOperations> &) throw(exception);}