FLImaging 7.8.25.3
DeviceSocketBase.h
1#pragma once
5
6#include "DeviceBase.h"
7#include "DeviceSocketDefinitions.h"
8#include <winsock2.h>
9
11namespace FLImaging
12{
14 namespace Devices
15 {
18
26 class FL_EXPORT CDeviceSocketBase : public CDeviceBase
27 {
28 public:
29
38
47
64
77
87 virtual bool IsSecured() const;
88
104 virtual const CResult SetConnectionIPAddress(const char* pU8Address, uint16_t u16Port);
105
121 virtual const CResult SetConnectionDNSAddress(const char* pDNSAddress, uint16_t u16Port);
122
132 const SOCKADDR_IN* GetSockAddrIn() const;
133
145 virtual const CResult Initialize() override;
146
158 virtual const CResult Terminate() override;
159
169 virtual bool IsFLProtocol() const;
170
180 virtual bool IsBlockTransferMode() const;
181
191 virtual bool IsPassiveMode() const;
192
206 virtual const CResult SetBlockSize(int32_t i32BlockSize);
207
217 virtual int32_t GetBlockSize() const;
218
219
229 virtual int64_t GetSocket() const;
230
247
260
271
285 const CResult CreateKeyPair(uint32_t u32Bits);
286
304 const CResult GetPublicKey(Base::CFLData& fldModulus, Base::CFLData& fldPublicExponent) const;
305
325 const CResult GetPrivateKey(Base::CFLData& fldModulus, Base::CFLData& fldPublicExponent, Base::CFLData& fldPrivateExponent) const;
326
344 const CResult SetPublicKey(const Base::CFLData& fldModulus, const Base::CFLData& fldPublicExponent);
345
365 const CResult SetPrivateKey(const Base::CFLData& fldModulus, const Base::CFLData& fldPublicExponent, const Base::CFLData& fldPrivateExponent);
366
380 const CResult GetIPAddress(uint8_t arrU8IPAddr[4]) const;
381
391 uint16_t GetPort() const;
392
403
416
426 virtual void SetLogging(bool bLogging);
427
437 virtual bool IsLogging() const;
438
439
449 virtual void SetCommLogging(bool bCommLogging);
450
460 virtual bool IsCommLogging() const;
461
471 virtual void SetPacketDataLogging(bool bPacketDataLogging);
472
482 virtual bool IsPacketDataLogging() const;
483
497 virtual const CResult SetPacketDataLoggingSize(int64_t i64PacketDataLoggingSize);
498
508 virtual int64_t GetPacketDataLoggingSize() const;
509
523 const CResult AddSentBytes(int64_t i64SentBytes);
524
534 int64_t GetCumulativeSentBytes() const;
535
548
562 const CResult AddRecvBytes(int64_t i64RecvBytes);
563
573 int64_t GetCumulativeRecvBytes() const;
574
587
588
589 DeclareGetClassType();
590
591 protected:
592
593 virtual bool CheckDeviceLibraries() const override;
594
595 protected:
596 virtual void SendOnConnecting();
597 virtual void SendOnConnected();
598 virtual void SendOnDisconnecting();
599 virtual void SendOnDisconnected();
600 virtual void SendOnReceived(const CDeviceSocketPacket* pSocketPacket);
601 virtual void SendOnSending(const CDeviceSocketPacket* pSocketPacket);
602 virtual void SendOnSent(const CDeviceSocketPacket* pSocketPacket);
603
604 virtual const CResult ConnectWithTimeout(SOCKET hSocket, const sockaddr_in& sockAddrIn, uint32_t u32TimeoutSec);
605 virtual bool IsInternetAvailable(uint32_t u32TimeoutSec = 2);
606
607 protected:
608 Base::CRSACryptography m_rsaCryptography;
609 Base::CFLData m_fldModulus;
610 Base::CFLData m_fldPublicExponent;
611 Base::CFLData m_fldPrivateExponent;
612
613 ESocketMode m_eSocketMode;
614 volatile SOCKET m_hSocket;
615 volatile bool m_bTrouble;
616 int32_t m_i32BlockSize;
617 Base::CFLString<char> m_astrDNS;
618 CDeviceSocketBase* m_pParent;
619
620 bool m_bLogging;
621 bool m_bCommLogging;
622 bool m_bPacketDataLogging;
623
624 int64_t m_i64PacketData;
625
626 SOCKADDR_IN m_sockAddr;
627
628 static WSADATA m_wsaData;
629 static int64_t m_i64WsaInitCount;
630
631 int64_t m_i64CumulativeSentBytes;
632 int64_t m_i64CumulativeRecvBytes;
633
634 CDeviceSocketPacketDistinguisher* m_pSocketPacketDistinguisher;
635
636 friend class CDeviceSocketClientManager;
637 friend class CDeviceSocketClientASCIIManager;
638 friend class CDeviceSocketServerASCII;
639 friend class CDeviceSocketClientASCII;
640 };
641 }
642}
643
Data class.
Definition FLData.h:30
Template type string class.
Definition FLString.h:34
RSA cryptography class.
Definition RSACryptography.h:30
FLImaging module execution result object.
Definition ResultsDef.h:1704
CDeviceBase()
Default constructor.
CDeviceSocketBase * GetParent() const
Get the pointer to the parent(server) socket.
virtual void SetCommLogging(bool bCommLogging)
Set whether to output communication logs.
virtual const CResult Terminate() override
Perform socket shutdown.
virtual bool IsBlockTransferMode() const
Check if the transfer mode is block transfer mode.
int64_t GetCumulativeRecvBytes() const
Get the cumulative received bytes.
const CResult GetPrivateKey(Base::CFLData &fldModulus, Base::CFLData &fldPublicExponent, Base::CFLData &fldPrivateExponent) const
Get the private key.
virtual const CResult Initialize() override
Perform socket initialization. Socket mode settings and connection information settings must be done ...
virtual const CResult SetConnectionIPAddress(const char *pU8Address, uint16_t u16Port)
Set the IP address to connect to.
const SOCKADDR_IN * GetSockAddrIn() const
Get the socket address in the form of SOCKADDR_IN*.
virtual ESocketMode GetSocketMode()
Returns socket mode.
virtual bool IsPacketDataLogging() const
Check whether packet byte logging is enabled.
const CResult AddSentBytes(int64_t i64SentBytes)
Adds the sent bytes value to the cumulative sent bytes.
virtual bool IsPassiveMode() const
Check if the connection is in passive mode.
const CResult ResetCumulativeRecvBytes()
Reset cumulative received bytes.
CDeviceSocketBase()
Default constructor.
virtual int64_t GetSocket() const
Get a socket with the int64_t type.
virtual void SetPacketDataLogging(bool bPacketDataLogging)
Enable or disable packet byte logging.
virtual bool IsFLProtocol() const
Check if the protocol is FLProtocol.
virtual bool IsLogging() const
Get whether to output logs.
virtual void SetLogging(bool bLogging)
Set whether to output logs.
const CResult SetPublicKey(const Base::CFLData &fldModulus, const Base::CFLData &fldPublicExponent)
Set the public key.
int64_t GetCumulativeSentBytes() const
Get the cumulative sent bytes.
const CResult ResetCumulativeSentBytes()
Reset cumulative sent bytes.
const Base::CFLString< char > & GetDNS() const
Get the DNS set with the SetConnectionDNSAddress function.
const CResult AddRecvBytes(int64_t i64RecvBytes)
Adds the received bytes value to the cumulative received bytes.
virtual ~CDeviceSocketBase()
Default destructor.
virtual const CResult SetConnectionDNSAddress(const char *pDNSAddress, uint16_t u16Port)
Set the DNS address to connect to.
virtual int32_t GetBlockSize() const
Get the current block size for data transfer.
const CResult GetIPAddress(uint8_t arrU8IPAddr[4]) const
Get an IP address.
virtual CDeviceSocketPacketDistinguisher * GetSocketPacketDistinguisher() const
Get a CDeviceSocketPacketDistinguisher object.
virtual const CResult SetSocketMode(ESocketMode eSocketMode=ESocketMode_FLProtocol_Passive_Plain)
Set socket mode.
virtual const CResult SetBlockSize(int32_t i32BlockSize)
Set the block size for data transfer.
virtual const CResult AssignSocketPacketDistinguisher(CDeviceSocketPacketDistinguisher *pSocketPacketDistinguisher)
Set CDeviceSocketPacketDistinguisher.
virtual bool IsCommLogging() const
Get whether to output communication logs.
const CResult SetPrivateKey(const Base::CFLData &fldModulus, const Base::CFLData &fldPublicExponent, const Base::CFLData &fldPrivateExponent)
Set the private key.
virtual int64_t GetPacketDataLoggingSize() const
Get the number of packet bytes to be displayed in logs.
const CResult GetPublicKey(Base::CFLData &fldModulus, Base::CFLData &fldPublicExponent) const
Get the public key.
uint16_t GetPort() const
Get the port number currently in use.
virtual void ClearSocketPacketDistinguisher()
Clear CDeviceSocketPacketDistinguisher.
virtual const CResult SetPacketDataLoggingSize(int64_t i64PacketDataLoggingSize)
Set the number of packet bytes to be displayed in logs.
const CResult CreateKeyPair(uint32_t u32Bits)
Create a key pair to be used for security.
virtual bool IsSecured() const
Gets whether to transmit securely.
A class that dispatches packets to their registered procedures based on packet type.
Definition DeviceSocketPacketDistinguisher.h:31
Socket packet class.
Definition DeviceSocketPacket.h:22
Socket Server Class.
Definition DeviceSocketServer.h:29
Definition AutoFileCleaner.h:19
ESocketMode
Definition of socket mode used for communication.
Definition DefinitionsDevices.h:29
@ ESocketMode_FLProtocol_Passive_Plain
FLProtocol Passive mode with Plain communication.
Definition DefinitionsDevices.h:33