cdev-1.7.2n
This commit is contained in:
97
extensions/cdevGenericServer/cdevClient/ServerHandler.h
Executable file
97
extensions/cdevGenericServer/cdevClient/ServerHandler.h
Executable file
@@ -0,0 +1,97 @@
|
||||
#if !defined (_SERVER_HANDLER_H_)
|
||||
#define _SERVER_HANDLER_H_
|
||||
|
||||
// *****************************************************************************
|
||||
// * SIG_PIPE_HANDLED:
|
||||
// * This definition tells the SocketWriter class not to independently
|
||||
// * handle the SIGPIPE signal.
|
||||
// *****************************************************************************
|
||||
#define SIG_PIPE_HANDLED 1
|
||||
|
||||
#include "cdevEventHandler.h"
|
||||
#include "cdevAddr.h"
|
||||
#include "cdevSocketConnector.h"
|
||||
#include "cdevReactor.h"
|
||||
|
||||
#include "SocketUtil.h"
|
||||
#include "fifo.h"
|
||||
|
||||
class ServerInterface;
|
||||
class ServerHandlerCallbackNode;
|
||||
class SignalManager;
|
||||
|
||||
// *****************************************************************************
|
||||
// * ServerHandlerCallback :
|
||||
// * This class is used by other classes to register to be informed when the
|
||||
// * ServerHandler is destroyed.
|
||||
// *****************************************************************************
|
||||
class GENERIC_SERVER_API ServerHandlerCallback
|
||||
{
|
||||
public:
|
||||
ServerHandlerCallback ( void ) {}
|
||||
virtual ~ServerHandlerCallback ( void ) {}
|
||||
virtual void executeServerHandlerCallback (class ServerHandler * handler) = 0;
|
||||
};
|
||||
|
||||
|
||||
// *****************************************************************************
|
||||
// * ServerHandler:
|
||||
// * This class provides the mechanisms that will be used to service the
|
||||
// * requests of a client.
|
||||
// *****************************************************************************
|
||||
class GENERIC_SERVER_API ServerHandler : public cdevEventHandler,
|
||||
public SocketReader,
|
||||
public SocketWriter
|
||||
{
|
||||
protected:
|
||||
static SignalManager signalManager;
|
||||
static int signalManagerInit;
|
||||
|
||||
char hostName [MAXHOSTNAMELEN + 1];
|
||||
char server [256];
|
||||
FifoQueue & queue;
|
||||
cdevSocketConnector stream;
|
||||
ServerInterface * serverface;
|
||||
ServerHandlerCallbackNode * callbacks;
|
||||
size_t enqueuedPackets;
|
||||
size_t enqueuedBytes;
|
||||
short clientID;
|
||||
int contextID;
|
||||
int tagChanged;
|
||||
int serverQuitFlag;
|
||||
|
||||
public:
|
||||
ServerHandler (char * Server, ServerInterface * Interface);
|
||||
~ServerHandler (void);
|
||||
virtual int outputError (int severity, char *name, char *formatString, ...);
|
||||
|
||||
virtual int open (const cdevAddr &addr);
|
||||
|
||||
char * getHostName (void);
|
||||
char * getName (void) const;
|
||||
virtual int getHandle (void) const;
|
||||
virtual char * getServer (void) const;
|
||||
|
||||
virtual int handleClose (void);
|
||||
virtual int handleInput (void);
|
||||
virtual int handleOutput (void);
|
||||
virtual int handleExcept (void);
|
||||
|
||||
virtual void registerServerCallback (ServerHandlerCallback *);
|
||||
virtual void unregisterServerCallback (ServerHandlerCallback *);
|
||||
|
||||
void enqueue (char * buf, size_t len);
|
||||
void undequeue (char * buf, size_t len) { queue.undequeue(buf, len); }
|
||||
int dequeue (char **buf, size_t *len) { return queue.dequeue(buf, len); }
|
||||
int empty (void) { return queue.empty(); }
|
||||
|
||||
static short getNextClientID ( void );
|
||||
short getClientID ( void ) { return clientID; }
|
||||
void setClientID ( short ClientID ) { clientID=ClientID; }
|
||||
int getContextID ( void ) { return contextID; }
|
||||
void setContextID ( int ContextID ) { contextID = ContextID; }
|
||||
int getTagChangeFlag ( void ) { return tagChanged; }
|
||||
void setTagChangeFlag ( int flag ) { tagChanged = flag; }
|
||||
};
|
||||
|
||||
#endif /* _SERVER_HANDLER_H_ */
|
||||
Reference in New Issue
Block a user