1 #pragma once
2 
3 #include "ASyncTCP.h"
4 #include "S0MeterBase.h"
5 
6 class S0MeterTCP: public S0MeterBase, ASyncTCP
7 {
8 public:
9 	S0MeterTCP(const int ID, const std::string &IPAddress, const unsigned short usIPPort);
10 	~S0MeterTCP(void);
11 	bool WriteToHardware(const char *pdata, const unsigned char length) override;
12 	boost::signals2::signal<void()>	sDisconnected;
13 private:
14 	bool StartHardware() override;
15 	bool StopHardware() override;
16 	bool WriteInt(const std::string &sendString);
17 	void Do_Work();
18 
19 	void OnConnect() override;
20 	void OnDisconnect() override;
21 	void OnData(const unsigned char *pData, size_t length) override;
22 	void OnError(const boost::system::error_code& error) override;
23 private:
24 	int m_retrycntr;
25 	std::string m_szIPAddress;
26 	unsigned short m_usIPPort;
27 	std::shared_ptr<std::thread> m_thread;
28 };
29 
30