#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.
成员类型定义说明
◆ DisconnectHandler
| using eve::network::UdpLink::DisconnectHandler = std::function<void(const std::string& reason)> |
◆ MessageHandler
| using eve::network::UdpLink::MessageHandler = std::function<void(MsgType, uint8_t channel, const char* data, size_t n)> |
成员枚举类型说明
◆ MsgType
|
strong |
构造及析构函数说明
◆ UdpLink()
在文件 UdpLink.cpp 第 124 行定义.
◆ ~UdpLink()
| eve::network::UdpLink::~UdpLink | ( | ) |
在文件 UdpLink.cpp 第 126 行定义.
成员函数说明
◆ isAlive()
◆ onDatagram()
| void eve::network::UdpLink::onDatagram | ( | const std::vector< char > & | bytes, |
| const std::string & | from | ||
| ) |
在文件 UdpLink.cpp 第 333 行定义.
引用了 frag, kPayloadMTU, p, type , 以及 v.
◆ peer()
◆ peerId()
◆ pendingFragments()
◆ pendingReliable()
◆ pump()
| void eve::network::UdpLink::pump | ( | int64_t | nowMs | ) |
在文件 UdpLink.cpp 第 417 行定义.
◆ send()
| void eve::network::UdpLink::send | ( | MsgType | type, |
| uint8_t | channel, | ||
| const void * | data, | ||
| size_t | n | ||
| ) |
在文件 UdpLink.cpp 第 164 行定义.
引用了 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 | ||
| ) |
◆ setDisconnectHandler()
|
inline |
◆ setLossRate()
| void eve::network::UdpLink::setLossRate | ( | float | rate | ) |
在文件 UdpLink.cpp 第 149 行定义.
◆ setMessageHandler()
|
inline |
引用了 h.
被这些函数引用 eve::network::NetRpc::NetRpc() , 以及 eve::network::NetRpc::~NetRpc().
◆ setPeerId()
◆ setRemote()
| bool eve::network::UdpLink::setRemote | ( | std::string | host, |
| uint16_t | port | ||
| ) |
在文件 UdpLink.cpp 第 133 行定义.
被这些函数引用 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.cpp 第 142 行定义.
引用了 setRemote().
◆ setTimeoutMs()
类成员变量说明
◆ kMaxMessage
|
staticconstexpr |
◆ kPayloadMTU
|
staticconstexpr |
被这些函数引用 onDatagram() , 以及 send().
该类的文档由以下文件生成:
- src/modules/network/UdpLink.h
- src/modules/network/UdpLink.cpp