Open 3D Engine GridMate API Reference  2205.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
Public Types | Public Member Functions | Public Attributes | Friends | List of all members
GridMate::SocketDriver Class Reference

Inherits GridMate::SocketDriverCommon.

Inherited by GridMate::StreamSocketDriver.

Public Types

typedef AZStd::unordered_set< SocketDriverAddress, SocketDriverAddress::HasherAddressSetType
 
- Public Types inherited from GridMate::SocketDriverCommon
using SocketType = Platform::SocketType_Platform
 
- Public Types inherited from GridMate::Driver
enum  ErrorCodes {
  EC_OK = 0, EC_SOCKET_CREATE, EC_SOCKET_LISTEN, EC_SOCKET_CLOSE,
  EC_SOCKET_MAKE_NONBLOCK, EC_SOCKET_BIND, EC_SOCKET_SOCK_OPT, EC_SOCKET_CONNECT,
  EC_SOCKET_ACCEPT, EC_SECURE_CONFIG, EC_SECURE_CREATE, EC_SECURE_CERT,
  EC_SECURE_PKEY, EC_SECURE_CA_CERT, EC_SEND, EC_SEND_ADDRESS_NOT_BOUND,
  EC_RECEIVE, EC_PLATFORM = 1000, EC_BUFFER_TOOLARGE = 1001
}
 
enum  BSDSocketFamilyType { BSD_AF_INET = 0, BSD_AF_INET6, BSD_AF_UNSPEC }
 
typedef unsigned int ResultCode
 

Public Member Functions

 GM_CLASS_ALLOCATOR (SocketDriver)
 
 SocketDriver (bool isFullPackets, bool isCrossPlatform, bool isHighPerformance=false)
 
AZStd::intrusive_ptr< DriverAddressCreateDriverAddress (const AZStd::string &address) override
 
AZStd::intrusive_ptr< DriverAddressCreateDriverAddress (const sockaddr *addr) override
 Additional CreateDriverAddress function should be implemented.
 
void DestroyDriverAddress (DriverAddress *address) override
 Called only from the DriverAddress when the use count becomes 0.
 
- Public Member Functions inherited from GridMate::SocketDriverCommon
 SocketDriverCommon (bool isFullPackets=false, bool isCrossPlatform=false, bool isHighPerformance=false)
 
unsigned int GetMaxNumConnections () const override
 Return maximum number of active connections at the same time. More...
 
unsigned int GetMaxSendSize () const override
 Return maximum data size we can send/receive at once in bytes, supported by the platform.
 
unsigned int GetPacketOverheadSize () const override
 Return packet overhead size in bytes.
 
ResultCode Initialize (int familyType=BSD_AF_INET, const char *address=nullptr, unsigned int port=0, bool isBroadcast=false, unsigned int receiveBufferSize=0, unsigned int sendBufferSize=0) override
 
unsigned int GetPort () const override
 Returns communication port (must be called after Initialize, otherwise it will return 0)
 
ResultCode Send (const AZStd::intrusive_ptr< DriverAddress > &to, const char *data, unsigned int dataSize) override
 Send data to a user defined address.
 
unsigned int Receive (char *data, unsigned int maxDataSize, AZStd::intrusive_ptr< DriverAddress > &from, ResultCode *resultCode=0) override
 
bool WaitForData (AZStd::chrono::microseconds timeOut=AZStd::chrono::microseconds(0)) override
 
void StopWaitForData () override
 
bool WasStopeedWaitingForData () override
 Return true if WaitForData was interrupted before the timeOut expired, otherwise false.
 
AZStd::string IPPortToAddress (const char *ip, unsigned int port) const override
 
bool AddressToIPPort (const AZStd::string &address, AZStd::string &ip, unsigned int &port) const override
 
- Public Member Functions inherited from GridMate::Driver
virtual void Update ()
 
virtual void ProcessIncoming ()
 
virtual void ProcessOutgoing ()
 
virtual bool CanSend () const
 

Public Attributes

AddressSetType m_addressMap
 

Friends

class SocketDriverAddress
 

Additional Inherited Members

- Static Public Member Functions inherited from GridMate::SocketDriverCommon
static AZStd::string IPPortToAddressString (const char *ip, unsigned int port)
 Create address for the socket driver from IP and port.
 
static bool AddressStringToIPPort (const AZStd::string &address, AZStd::string &ip, unsigned int &port)
 Decompose an address to IP and port.
 
static BSDSocketFamilyType AddressFamilyType (const AZStd::string &ip)
 Return the family type of the address (AF_INET,AF_INET6 AF_UNSPEC)
 
static BSDSocketFamilyType AddressFamilyType (const char *ip)
 
- Protected Member Functions inherited from GridMate::SocketDriverCommon
virtual SocketType CreateSocket (int af, int type, int protocol)
 returns result of socket(af,type,protocol)
 
virtual int BindSocket (const sockaddr *sockAddr, size_t sockAddrLen)
 returns the result of bind(sockAddr)
 
virtual ResultCode SetSocketOptions (bool isBroadcast, unsigned int receiveBufferSize, unsigned int sendBufferSize)
 set's default socket options
 
- Protected Attributes inherited from GridMate::SocketDriverCommon
SocketType m_socket
 
unsigned short m_port
 
bool m_isStoppedWaitForData
 True if last WaitForData was interrupted otherwise false.
 
bool m_isFullPackets
 True if we use max packet size vs internet safe packet size (64KB vs 1500 usually)
 
bool m_isCrossPlatform
 True if we support cross platform communication. Then we make sure we use common features.
 
bool m_isIpv6
 True if we use version 6 of the internet protocol, otherwise false.
 
bool m_isDatagram
 True if the socket was created with SOCK_DGRAM.
 
AZStd::unique_ptr< PlatformSocketDriverm_platformDriver
 Platform specific implementation of socket calls.
 
bool m_isHighPerformance
 True if using platform-specific high-performance implementation.
 
- Protected Attributes inherited from GridMate::Driver
bool m_canSend
 Can the driver accept more data.
 

Member Function Documentation

◆ CreateDriverAddress()

AZStd::intrusive_ptr<DriverAddress> GridMate::SocketDriver::CreateDriverAddress ( const AZStd::string &  address)
overridevirtual

Creates internal driver address to be used for send/receive calls.

Note
if the ip and the port are the same, the same pointer will be returned. You can use the returned pointer to compare for unique addresses.
Driver address allocates internal resources, use it only when you intend to communicate. Otherwise operate with the string address.

Implements GridMate::SocketDriverCommon.


The documentation for this class was generated from the following file: