LAPTOP-T815PCOQ\25526
2024-11-15 f5c4a7f3bce165fe2c8c6d934f0f49a363a2ea60
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#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;
    };
}