zoukankan      html  css  js  c++  java
  • KBEngine源码:EntityCall

    在之前的章节中一直提到EntityCall,那什么是EntityCall?我们可以简单的理解为:封装远程交互、通讯等方法的一种对象,是脚本层与实体远程交互的常规手段。

    EntityCall的底层实现原理:

    EntityCall对象在C++底层实现非常简单,它只包含了实体的ID、目的地的地址、实体类型、EntityCall类型。

    当用户请求一次远程交互时,底层首先能够通过实体类型找到实体定义的描述(def配置文件),通过该描述对用户输入的数据进行检查,如果检查合法那么底层将数据打包并发往目的地,接着目的地进程根据协议进行解包,根据实体ID找到实体,最终调用到脚本层。

    EntityCall的限制或要求:

    刚才在底层实现原理中提到,必须先通过实体类型找到实体定义的描述,而这个描述即是def配置文件!相当于互相之间的远程通讯都通过def“协议”规定好的。所以EntityCall只能:

    1:调用其对应def配置文件中声明过的方法;
    2:def配置中的属性不可被访问;
    3:在def定义之外的任何信息都不可被访问。

    一个实体包含哪些EntityCall?

    一个实体最多可以包含三个部分:

    1.client:

    当实体包含客户端部分时(通常为玩家),在服务器端可以访问实体的client属性,该属性是一个EntityCall。

    2.base:

    当实体的一部分创建在Baseapp(如Baseapp A)时,在非当前Baseapp(如Baseapp B、Cellapp C等)中可以访问实体的base属性,该属性是一个EntityCall。

    2.cell:

    当实体的一部分创建在Cellapp(如Cellapp A)时,在非当前Cellapp(如Cellapp B、Baseapp C等)中可以访问实体的cell属性,该属性是一个EntityCall。

  • 相关阅读:
    【校招面试 之 C/C++】第1题 为什么优先使用构造函数的初始化列表
    Linux平台ORACLE INSTANT客户端安装
    ORACLE数据库链接
    ORACLE用户管理
    【转】软件开发工具介绍之 6.Web开发工具
    【转】三大UML建模工具Visio、Rational Rose、PowerDesign的区别
    ORACLE数据库查看执行计划
    数据分析方法
    ORACLE对象大小写问题
    计算机改名引发的ORA
  • 原文地址:https://www.cnblogs.com/losophy/p/9575757.html
Copyright © 2011-2022 走看看