www.pudn.com > acdx.rar > ACDCommandListener.cpp
/*============================================================= Function: Author: Leon Wang==============================================================*/ // ACDCommandListener.cpp: implementation of the ACDCommandListener class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "ACDCommandListener.h" #include "Socket/ServerSocket.h" #include "Socket/ServerSocketHandler.h" #include #include "socket/HttpServer.h" #include "socket/HttpRequestProcess.h" using namespace std; //##ModelId=424BB6470334 class SocketHandlerImpl : public SocketHandler { //##ModelId=424BB6470344 long i; public: //##ModelId=424BB6470353 SocketHandlerImpl () : SocketHandler() { i = -1; } //##ModelId=424BB6470354 virtual ~SocketHandlerImpl () { SocketHandler::release(); } //##ModelId=424BB6470356 long run () { Socket & sock = getSocket(); while ( true ) { char buffer[1024]; long noRead = sock.recieve( buffer, 1024 ); buffer[noRead] = '\0'; } } }; //////////////////////////////////////////////////////////////////////////////////// // CreateSocketHandlerImpl // // Purpose: create connection socket is an abstract class // used only to create connect sockets or their derived classes. // you must implement you own //##ModelId=424BB6470363 class CreateSocketHandlerImpl : public CreateSocketHandler { //##ModelId=424BB6470365 long i; public: //##ModelId=424BB6470372 CreateSocketHandlerImpl () : CreateSocketHandler() { i = -1; } //##ModelId=424BB6470373 virtual ~CreateSocketHandlerImpl () {} // responsible for create a connection //##ModelId=424BB6470375 SocketHandler * createHandler () { return (SocketHandler *) new SocketHandlerImpl(); } }; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// //##ModelId=424BB64702F6 ACDCommandListener::ACDCommandListener() { listening = true; listenSocket = NULL; } //##ModelId=424BB64702F7 ACDCommandListener::~ACDCommandListener() { } //##ModelId=424BB64702D8 unsigned __stdcall ACDCommandListener::_RUN(void *p) { ACDCommandListener * pThis = (ACDCommandListener*)p; pThis->RUN(); delete pThis; return 0; } //##ModelId=42198D180336 // start 7001 server port for HTTP request //##ModelId=424BB64702D7 void ACDCommandListener::RUN(){ #if defined(_DEBUG) _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); #endif HttpServer server(10,port); server.setACDX(acdx);// set acdx obj server.create( string("hubbardd"), string("d:\\Projects\\HtmlMenu\\Menus") ); HttpResponse::setServer( server ); while ( true ) { // if ( _kbhit() )// check keybord input // break; Sleep(100); } /* try { listenSocket = new ServerSocket(port); } catch (IOException ioe) { System.out.println("Can't open listen socket on port " + port + ":" + ioe); System.exit(-1); } while (listening) { try { new Thread(new ACDCommandListenerThread(listenSocket.accept(), redirLocation)).start(); } catch (IOException ioe) { if (listening) ioe.printStackTrace(); // else ignore, exception is normal on shutdown to terminate accept() } } try { listenSocket.close(); } catch (IOException ioe) { // ignore, we want to shut down } */ } //##ModelId=424BB64702E8 void ACDCommandListener::init(ACDX* _acdx,int _port, CString _location) { port = _port; redirLocation = _location; acdx = _acdx; } /** * Stop the thread. */ //##ModelId=424BB64702F9 void ACDCommandListener::stopListening() { listening = FALSE; // wakeup accept // Thread.currentThread().interrupt(); }