#include <Channel.h>
Collaboration diagram for Impala::Util::Channel:
Public Types | |
typedef void(*) | FP_INFO (CString msg) |
Pointer to a function to be called for info messages in case no listener is provided. | |
typedef void(*) | FP_ERROR (CString msg) |
Pointer to a function to be called for error messages in case no listener is provided. | |
typedef int(*) | FP_REQUEST (char *buf, int len, int bufSize) |
Pointer to a function to be called by "Serve" upon arrival of a request in case no listener is provided. | |
typedef void(*) | FP_IDLE () |
Pointer to a function to be called by the non-blocking "Serve" whenever the socket is idle, in case no listener is provided. | |
Public Member Functions | |
Channel (int port, int nrPorts, ChannelListener *listener=0) | |
Constructor for the server side of the channel. | |
Channel (String serverName, int port) | |
Constructor for the client side of the channel. | |
~Channel () | |
Destructor. | |
int | GetNrPorts () const |
The number of ports used by this channel. | |
int | GetPortNumber (int idx) const |
The actual port number for the given index (range = [0. | |
String | GetCurRequestConnection () const |
The machine that did the current request. | |
int | GetCurRequestPort () const |
The port of the current request. | |
String | GetServerInfo () |
The name:port of the server. | |
bool | Valid () |
Indicates whether this channel has had errors. | |
void | SetListener (ChannelListener *listener) |
Register a listener for this channel. | |
void | SetMessageFunc (FP_INFO fpInfo, FP_ERROR fpError) |
Sets functions to be called for info&error messages in case no listener is provided. | |
char * | Buffer () |
THE buffer of this channel. | |
void | Serve (FP_REQUEST fpRequest, FP_IDLE fpIdle=0) |
Start acting as a server and forward requests to listener or fpRequest. | |
void | Serve (bool callbackOnIdle=false) |
Start acting as a server and forward requests to either mFpRequest or to the listener. | |
int | SendRequest (int len) |
Sends the message of len bytes in THE buffer to the server and puts the answer in THE buffer. | |
bool | LastSendHadError () |
Indicates whether last SendRequest call resulted in an error. | |
void | MaximizeSendRecvBuffer () |
Maximize send and recv buffer size of the socket Hmmm, doesn't seems useful? | |
void | Close () |
Close the channel. | |
Static Public Attributes | |
static const int | DATA_BUFFER_SIZE = 10485760 |
The size of THE buffer of this channel. | |
Private Types | |
typedef int | socklen_t |
typedef u_long | in_addr_t |
Private Member Functions | |
void | InitSocket () |
void | CloseSocket (SOCKET sock) |
int | WaitForSocketEvent () |
Wait for an event on one of the sockets. | |
int | SendLarge (SOCKET sock, int nrData) |
int | RecvLarge (SOCKET sock) |
int | HandleRequest (char *buf, int len, int bufSize) |
void | HandleIdle () |
void | HandleInfo (CString msg) |
void | HandleError (CString msg, bool isSockError) |
void | HandleDisconnect (int port) |
Private Attributes | |
bool | mIsServer |
String | mServerName |
int | mPort |
int | mNrPorts |
std::vector< SOCKET > | mSock |
std::vector< bool > | mSockConnected |
std::vector< String > | mConnection |
std::vector< bool > | mSockEvent |
std::vector< SOCKET > | mMsgSock |
std::vector< bool > | mMsgSockEvent |
char * | mBuffer |
int | mNrError |
int | mCurRequestSock |
FP_INFO | mFpInfo |
FP_ERROR | mFpError |
FP_REQUEST | mFpRequest |
FP_IDLE | mFpIdle |
bool | mCallbackOnIdle |
ChannelListener * | mListener |
ILOG_VAR_DECL | |
Static Private Attributes | |
static const int | CTR_HEADER_SIZE = 20 |
Definition at line 47 of file Channel.h.