#pragma once
|
#include "IEquipment.h"
|
#include <string>
|
#include "SocketServer.h"
|
#include <list>
|
#include <map>
|
#include "Unit.h"
|
|
|
namespace BEQ {
|
class CEquipment :
|
public IEquipment
|
{
|
public:
|
CEquipment();
|
CEquipment::CEquipment(const char* pszName);
|
~CEquipment();
|
|
public:
|
virtual void setEquipmentListener(EquipmentListener listener);
|
virtual int getName(char* pszBuffer, int nMaxCount);
|
virtual void setName(const char* pszName);
|
virtual int getVersion(char* pszBuffer, int nMaxCount);
|
virtual void setVersion(const char* pszVersion);
|
virtual IUnit* addUnit(const char* pszName, int nDoorCount);
|
virtual IUnit* getUnit(const char* pszName);
|
virtual int runOnClientMode(const char* pAddr, int port);
|
virtual int runOnServerMode(int port);
|
virtual int repRecipeListComplete();
|
virtual int repLoadReadyComplete(int errorCode);
|
|
private:
|
void addClient(CAcceptClient* pClient);
|
void removeClient(CAcceptClient* pClient);
|
int decode(CAcceptClient* pClient, const char* pData, int len);
|
int executeCommand(CAcceptClient* pClient, CString& strCmd, std::map<std::string, std::string>& params);
|
const char* getReply(const char* pszReply);
|
CUnit* checkUnitAndReply(std::string& strUnit, CAcceptClient* pClient, const char* pszReply);
|
CUnit* checkUnitAndReplyEx(std::string& strUnit, int& layer, CAcceptClient* pClient, const char* pszReply);
|
void makeResponse(const char* pszReply, const char* pszParam, const char* pValue, CString& strResponse);
|
void makeResponseEx(const char* pszReply, const char* pszParam, const char* pValue, CString& strResponse);
|
void makeResponseEx(const char* pszReply, const char* pszUnit, const char* pszParam, const char* pValue, CString& strResponse);
|
void makeFailResponse(const char* pszReply, const char* pszUnit, const char* pszText, CString& strResponse);
|
void repState(CAcceptClient* pClient, CUnit* pUnit, const char* pszReply);
|
void repDoorState(CAcceptClient* pClient, CUnit* pUnit, const char* pszReply);
|
void repAlarm(CAcceptClient* pClient, CUnit* pUnit, const char* pszReply);
|
void repStep(CAcceptClient* pClient, CUnit* pUnit, const char* pszReply);
|
void repData(CAcceptClient* pClient, CUnit* pUnit, const char* pszReply);
|
void repRecipeList(CAcceptClient* pClient, CUnit* pUnit, const char* pszReply);
|
void repRunRecipe(CAcceptClient* pClient, CUnit* pUnit, int id, const char* pszName, const char* pszReply);
|
void repNotReady(CAcceptClient* pClient, CUnit* pUnit, int layer, const char* pszReply);
|
void repLoadReady(CAcceptClient* pClient, CUnit* pUnit, const char* pszUnitName, const char* pszMaterielId, const char* pszRecipeId, const char* pszReply);
|
void repLoad(CAcceptClient* pClient, CUnit* pUnit, int layer, const char* pszReply);
|
void repUnload(CAcceptClient* pClient, CUnit* pUnit, int layer, const char* pszReply);
|
void repLoadComplete(CAcceptClient* pClient, CUnit* pUnit, const char* pszUnitName, int layer, const char* pszReply);
|
void repUnloadComplete(CAcceptClient* pClient, CUnit* pUnit, const char* pszUnitName, int layer, const char* pszReply);
|
|
private:
|
std::string timeToString(ULONGLONG time);
|
|
private:
|
std::string m_strName;
|
std::string m_strVersion;
|
CSocketServer* m_pServer;
|
AcceptClientListener* m_pClientListener;
|
std::list<CAcceptClient*> m_clients;
|
std::list<CAcceptClient*> m_recycleClients;
|
CAcceptClient* m_pActiveClient;
|
|
private:
|
std::map<std::string, BEQ::CUnit*> m_units;
|
EquipmentListener m_listener;
|
|
private:
|
CAcceptClient* m_pReqRecipeListClient;
|
CUnit* m_pReqRecipeListUnit;
|
std::string m_strReqRecipeListReply;
|
CAcceptClient* m_pRunRecipeClient;
|
CUnit* m_pRunRecipeUnit;
|
std::string m_strRunRecipeReply;
|
};
|
}
|