提交 d2c16ea4b89d2e2bc383bbdbffe05962d76cc494

作者 LJH 李佳桓
1 个父辈 79acf55e

add

正在显示 1 个修改的文件 包含 69 行增加0 行删除
  1 +/*
  2 + * Copyright 2007 Stephen Liu
  3 + * For license terms, see the file COPYING along with this library.
  4 + */
  5 +
  6 +#ifndef __splfserver_hpp__
  7 +#define __splfserver_hpp__
  8 +
  9 +#include "spthread.hpp"
  10 +
  11 +class SP_EventArg;
  12 +class SP_ThreadPool;
  13 +class SP_HandlerFactory;
  14 +class SP_CompletionHandler;
  15 +class SP_IOChannelFactory;
  16 +
  17 +typedef struct tagSP_AcceptArg SP_AcceptArg_t;
  18 +
  19 +struct event;
  20 +
  21 +// leader/follower thread pool server
  22 +class SP_LFServer {
  23 +public:
  24 + SP_LFServer( const char * bindIP, int port, SP_HandlerFactory * handlerFactory );
  25 + ~SP_LFServer();
  26 +
  27 + void setTimeout( int timeout );
  28 + void setMaxConnections( int maxConnections );
  29 + void setMaxThreads( int maxThreads );
  30 + void setReqQueueSize( int reqQueueSize, const char * refusedMsg );
  31 + void setIOChannelFactory( SP_IOChannelFactory * ioChannelFactory );
  32 +
  33 + void shutdown();
  34 + int isRunning();
  35 +
  36 + // return -1 : cannot listen on ip:port, 0 : ok
  37 + int run();
  38 +
  39 + void runForever();
  40 +
  41 +private:
  42 + char mBindIP[ 64 ];
  43 + int mPort;
  44 + int mIsShutdown;
  45 + int mIsRunning;
  46 +
  47 + SP_AcceptArg_t * mAcceptArg;
  48 +
  49 + SP_EventArg * mEventArg;
  50 +
  51 + int mMaxThreads;
  52 + SP_ThreadPool * mThreadPool;
  53 +
  54 + SP_CompletionHandler * mCompletionHandler;
  55 +
  56 + struct event * mEvAccept;
  57 + struct event * mEvSigInt, * mEvSigTerm;
  58 +
  59 + sp_thread_mutex_t mMutex;
  60 +
  61 + void handleOneEvent();
  62 +
  63 + static void lfHandler( void * arg );
  64 +
  65 + static void sigHandler( int, short, void * arg );
  66 +};
  67 +
  68 +#endif
  69 +
注册登录 后发表评论