载入中...
搜索中...
未找到

#include <UdpLink.h>

Public 类型

enum class  MsgType : uint8_t { Reliable = 0 , Unreliable = 1 , UnreliableOrdered = 2 }
 
using MessageHandler = std::function< void(MsgType, uint8_t channel, const char *data, size_t n)>
 
using DisconnectHandler = std::function< void(const std::string &reason)>
 

Public 成员函数

 UdpLink (Network *net, UdpSocket *sock)
 
 ~UdpLink ()
 
bool setRemote (std::string host, uint16_t port)
 
bool setRemoteString (const std::string &addr)
 
std::string peer () const
 
void send (MsgType type, uint8_t channel, const void *data, size_t n)
 
bool sendString (MsgType type, uint8_t channel, const std::string &s)
 
void onDatagram (const std::vector< char > &bytes, const std::string &from)
 
void pump (int64_t nowMs)
 
void setMessageHandler (MessageHandler h)
 
void setDisconnectHandler (DisconnectHandler h)
 
void setLossRate (float rate)
 
void setTimeoutMs (int ms)
 
bool isAlive () const
 
uint32_t peerId () const
 
void setPeerId (uint32_t id)
 
size_t pendingReliable () const
 
size_t pendingFragments () const
 

静态 Public 属性

static constexpr size_t kPayloadMTU = 1200
 
static constexpr size_t kMaxMessage = 256 * 1024
 

详细描述

Point-to-point reliable/unreliable UDP link.

Owns no socket: it drives an externally-owned UdpSocket (client: connect(); server: bind() + setRemote(addr) per link). All link state is advanced on the main thread from Network::pump(): inbound datagrams are routed here and timers (retransmit / heartbeat / fragment expiry) are driven from pump().

Protocol (little-endian): [0]u8 'E' [1]u8 'V' [2]u8 ver=1 [3]u8 type [4]u8 channel [5]u8 flags [6]u32 seq [10]u32 ack [14]u32 ackBits optional frag header (flags&1): u32 msgId u16 fragCount u16 fragIndex payload follows.

在文件 UdpLink.h29 行定义.

成员类型定义说明

◆ DisconnectHandler

using eve::network::UdpLink::DisconnectHandler = std::function<void(const std::string& reason)>

在文件 UdpLink.h39 行定义.

◆ MessageHandler

using eve::network::UdpLink::MessageHandler = std::function<void(MsgType, uint8_t channel, const char* data, size_t n)>

在文件 UdpLink.h37 行定义.

成员枚举类型说明

◆ MsgType

enum class eve::network::UdpLink::MsgType : uint8_t
strong
枚举值
Reliable 
Unreliable 
UnreliableOrdered 

在文件 UdpLink.h31 行定义.

构造及析构函数说明

◆ UdpLink()

eve::network::UdpLink::UdpLink ( Network net,
UdpSocket sock 
)

在文件 UdpLink.cpp124 行定义.

◆ ~UdpLink()

eve::network::UdpLink::~UdpLink ( )

在文件 UdpLink.cpp126 行定义.

成员函数说明

◆ isAlive()

bool eve::network::UdpLink::isAlive ( ) const
inline

在文件 UdpLink.h64 行定义.

◆ onDatagram()

void eve::network::UdpLink::onDatagram ( const std::vector< char > &  bytes,
const std::string &  from 
)

在文件 UdpLink.cpp333 行定义.

引用了 frag, kPayloadMTU, p, type , 以及 v.

◆ peer()

std::string eve::network::UdpLink::peer ( ) const
inline

在文件 UdpLink.h48 行定义.

◆ peerId()

uint32_t eve::network::UdpLink::peerId ( ) const
inline

在文件 UdpLink.h65 行定义.

◆ pendingFragments()

size_t eve::network::UdpLink::pendingFragments ( ) const
inline

在文件 UdpLink.h68 行定义.

◆ pendingReliable()

size_t eve::network::UdpLink::pendingReliable ( ) const
inline

在文件 UdpLink.h67 行定义.

◆ pump()

void eve::network::UdpLink::pump ( int64_t  nowMs)

在文件 UdpLink.cpp417 行定义.

◆ send()

void eve::network::UdpLink::send ( MsgType  type,
uint8_t  channel,
const void *  data,
size_t  n 
)

在文件 UdpLink.cpp164 行定义.

引用了 data, frag, kMaxMessage, kPayloadMTU, n, p, Reliable, type , 以及 UnreliableOrdered.

被这些函数引用 eve::network::NetRpc::call(), sendString() , 以及 eve::network::NetHost::sendTo().

◆ sendString()

bool eve::network::UdpLink::sendString ( MsgType  type,
uint8_t  channel,
const std::string &  s 
)

在文件 UdpLink.cpp236 行定义.

引用了 s, send() , 以及 type.

被这些函数引用 eve::network::NetHost::sendStringTo().

◆ setDisconnectHandler()

void eve::network::UdpLink::setDisconnectHandler ( DisconnectHandler  h)
inline

在文件 UdpLink.h60 行定义.

引用了 h.

◆ setLossRate()

void eve::network::UdpLink::setLossRate ( float  rate)

在文件 UdpLink.cpp149 行定义.

◆ setMessageHandler()

void eve::network::UdpLink::setMessageHandler ( MessageHandler  h)
inline

在文件 UdpLink.h59 行定义.

引用了 h.

被这些函数引用 eve::network::NetRpc::NetRpc() , 以及 eve::network::NetRpc::~NetRpc().

◆ setPeerId()

void eve::network::UdpLink::setPeerId ( uint32_t  id)
inline

在文件 UdpLink.h66 行定义.

引用了 id.

◆ setRemote()

bool eve::network::UdpLink::setRemote ( std::string  host,
uint16_t  port 
)

在文件 UdpLink.cpp133 行定义.

被这些函数引用 setRemoteString().

◆ setRemoteString()

bool eve::network::UdpLink::setRemoteString ( const std::string &  addr)

Accept a peer address string exactly as reported by the socket ("host:port").

在文件 UdpLink.cpp142 行定义.

引用了 setRemote().

◆ setTimeoutMs()

void eve::network::UdpLink::setTimeoutMs ( int  ms)
inline

在文件 UdpLink.h62 行定义.

类成员变量说明

◆ kMaxMessage

constexpr size_t eve::network::UdpLink::kMaxMessage = 256 * 1024
staticconstexpr

在文件 UdpLink.h72 行定义.

被这些函数引用 send().

◆ kPayloadMTU

constexpr size_t eve::network::UdpLink::kPayloadMTU = 1200
staticconstexpr

在文件 UdpLink.h71 行定义.

被这些函数引用 onDatagram() , 以及 send().


该类的文档由以下文件生成: