📄 acdcommandlistener.cpp
字号:
/*=============================================================
Function:
Author: Leon Wang <wlywly@sina.com giga2@tom.com>
==============================================================*/
// ACDCommandListener.cpp: implementation of the ACDCommandListener class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ACDCommandListener.h"
#include "Socket/ServerSocket.h"
#include "Socket/ServerSocketHandler.h"
#include <locale>
#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();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -