ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::handle_pram Struct Reference

消息调度参数块,携带发送者、接收者和负载信息。 More...

#include <handle_pram.h>

Public Types

using forwardtype = std::function<void(handle_pram&)>
 转发函数类型。
using callfail = std::function<void()>
 失败回调函数类型。
template<typename T, typename Y>
using nforward_g2c = std::shared_ptr<np_actor_forward<T, forward_g2c<Y>>>
template<typename T, typename Y>
using nforward_c2g = std::shared_ptr<np_actor_forward<T, forward_c2g<Y>>>

Public Member Functions

 handle_pram (handle_pram &&) noexcept=default
handle_pram & operator= (handle_pram &&) noexcept=default
 handle_pram (const handle_pram &)=default
handle_pram & operator= (const handle_pram &)=default

Static Public Member Functions

static i32_serverid serverid (i64_actorid aactorid)
 将actor guid解析为所属服务器ID。
static i32_serverid gatewayid (i64_actorid aactorid)
 将角色actor解析为当前拥有它的网关服务器。
static void serveridlist (ENUM_ACTOR atype, std::set< i32_serverid > &avec)
 收集给定单例/系统actor类型的所有服务器ID。
template<typename T>
static bool send (i32_sessionid asession, T &adata, const nguid &aactorid, const nguid &arequestactorid)
 通过已有的TCP会话发送一个类型化负载。
static bool send_pack (i32_serverid aserverid, std::shared_ptr< pack > &apack)
 将一个已构建的包发送到拥有该路由的服务器。
static bool send_pack (i32_serverid aserverid, std::shared_ptr< void > &apack)
 将一个已构建的包(类型擦除)发送到拥有该路由的服务器。
template<typename T, bool IS_SEND = true>
static void make_forward (handle_pram &apram)
template<typename T>
static void make_client (handle_pram &apram)
template<typename T, bool IS_SEND = true, bool IS_FORWARDFUN = true>
static handle_pram create (const nguid &aid, const nguid &arid, const std::shared_ptr< T > &adata, const callfail &afailfun=nullptr)
template<typename T, bool IS_SEND = true>
static handle_pram create (const std::set< i64_actorid > &aids, const nguid &arid, const std::shared_ptr< T > &adata, const callfail &afailfun=nullptr)
template<typename T, typename Y>
static handle_pram create (const nguid &aid, const nguid &arid, const nforward_g2c< T, Y > &adata, const callfail &afailfun=nullptr)
template<typename T, typename Y>
static handle_pram create (const nguid &aid, const nguid &arid, const nforward_c2g< T, Y > &adata, const callfail &afailfun=nullptr)
static handle_pram create (const nguid &aid, const nguid &arid, const std::shared_ptr< pack > &apack)
template<typename Y>
static bool send (const nguid &aactorid, handle_pram &adata)

Public Attributes

i32_protocolnum m_enum = -1
 协议ID,标识消息类型。
std::shared_ptr< void > m_data = nullptr
 类型化的协议负载(类型擦除)。
std::shared_ptr< packm_pack = nullptr
 直接转发时的原始网络包。
nguid m_actor = nguid::make()
 目标Actor全局唯一标识符。
nguid m_requestactor = nguid::make()
 原始发送者Actor全局唯一标识符。
std::set< i64_actoridm_massactors
 批量转发的目标Actor ID集合。
forwardtype m_forward = nullptr
 远程转发使用的传输回调。
bool m_forwardtype = false
 当没有具体GUID时按actor类型广播。
callfail m_failfun = nullptr
 路由无法解析目标时的失败回调。
bool m_issend = true
 此消息是否需要远程发送。

Detailed Description

消息调度参数块,携带发送者、接收者和负载信息。

该结构体是Actor消息传递系统的核心数据结构,封装了:

  • 协议类型和负载数据
  • 发送者和接收者的Actor GUID
  • 批量转发目标集合
  • 转发回调和失败处理

支持单播、批量广播和按类型广播三种消息发送模式。

Member Function Documentation

◆ gatewayid()

i32_serverid ngl::handle_pram::gatewayid ( i64_actorid aactorid)
static

将角色actor解析为当前拥有它的网关服务器。

Parameters
aactorid角色Actor数据ID
Returns
i32_serverid 网关服务器ID,未找到返回-1

从actor ID中提取网关ID。

Parameters
aactorid要解析的actor ID
Returns
网关ID分量

◆ send()

template<typename T>
bool ngl::handle_pram::send ( i32_sessionid asession,
T & adata,
const nguid & aactorid,
const nguid & arequestactorid )
static

通过已有的TCP会话发送一个类型化负载。

Template Parameters
T消息类型
Parameters
asessionTCP会话ID
adata消息数据
aactorid目标Actor GUID
arequestactorid发送者Actor GUID
Returns
bool 发送是否成功

◆ send_pack() [1/2]

bool ngl::handle_pram::send_pack ( i32_serverid aserverid,
std::shared_ptr< pack > & apack )
static

将一个已构建的包发送到拥有该路由的服务器。

Parameters
aserverid目标服务器ID
apack网络包智能指针
Returns
bool 发送是否成功

◆ send_pack() [2/2]

bool ngl::handle_pram::send_pack ( i32_serverid aserverid,
std::shared_ptr< void > & apack )
static

将一个已构建的包(类型擦除)发送到拥有该路由的服务器。

Parameters
aserverid目标服务器ID
apack类型擦除的网络包智能指针
Returns
bool 发送是否成功

◆ serverid()

i32_serverid ngl::handle_pram::serverid ( i64_actorid aactorid)
static

将actor guid解析为所属服务器ID。

Parameters
aactoridActor数据ID
Returns
i32_serverid 服务器ID,未找到返回-1

从actor ID中提取服务器ID。

Parameters
aactorid要解析的actor ID
Returns
服务器ID分量

◆ serveridlist()

void ngl::handle_pram::serveridlist ( ENUM_ACTOR atype,
std::set< i32_serverid > & avec )
static

收集给定单例/系统actor类型的所有服务器ID。

Parameters
atypeActor类型
avec输出参数,收集到的服务器ID集合

获取指定actor类型的所有服务器ID列表。

Parameters
atype要查询的actor类型
avec用于存储服务器ID的输出集合

The documentation for this struct was generated from the following files: