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(); 
}