IFObjSys.cs 7.04 KB
Newer Older
潘栩锋's avatar
潘栩锋 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;

namespace FObjBase
{
    public interface IFObjSysAsClient
    {
        /// <summary>
        /// 添加OBJ 入 本地OBJSys
        /// </summary>
        /// <param name="obj"></param>
        void ObjAdd(IFObj obj);

        /// <summary>
        /// 获取一个没有被分配的 Obj ID
        /// </summary>
        /// <returns></returns>
        UInt32 GetFreeObjID();

        /// <summary>
        /// 创建了一个远端服务的客户代理, 删除这个代理;
        /// 还需要通知远端,这个代理已经不存在,与它相关的推送,都要关闭
        /// 当没有一个obj 与远端服务连接,socket也会被释放
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="conn"></param>
        void ObjRemove(IFObj obj, IFConn conn);
        /// <summary>
        /// 连接到远端的OBJSys连接
        /// </summary>
        /// <param name="ep">远端地址</param>
        /// <param name="objids">连接成功后,通知这些obj</param>
        /// <returns></returns>
        TCPCConn Connect_to_Another_OBJSys(IPEndPoint ep, params UInt32[] objids);

        /// <summary>
        /// 断开到远端OBJSys的连接
        /// </summary>
        /// <param name="ep">远端地址</param>
        /// <param name="objids">连接成功后,通知这些obj</param>
        /// <returns></returns>
        void Disconnect_to_Another_OBJSys(IPEndPoint ep, params UInt32[] objids);

        /// <summary>
        /// 注册本地obj 为远端obj的敏感对象,得到远端obj的推送消息
        /// </summary>
        /// <param name="s1">远端对应的连接代理 </param>
        /// <param name="objid">远端的ID</param>
        /// <param name="senobjid">本地obj</param>
        /// <param name="sense_mask">注册的敏感源</param>
        /// <param name="action">动作,添加?删除?</param>
        void SenseConfigEx(IFConn s1, UInt32 objid, UInt32 senobjid, UInt32 sense_mask, SENSE_CONFIG action);

        /// <summary>
        /// 对外发送消息
        /// </summary>
        /// <param name="s1">远端对应的连接代理 </param>
        /// <param name="destid">远端的ID</param>
        /// <param name="srcid">本地的ID</param>
        /// <param name="magic">交易码</param>
        /// <param name="info_no">信息码</param>
        /// <param name="info_data">信息内容</param>
        void SendMessageEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt32 magic, UInt16 info_no, byte[] info_data);


        /// <summary>
        /// 向远端GetValue
        /// </summary>
        /// <param name="s1">远端对应的连接代理</param>
        /// <param name="destid">远端的ID</param>
        /// <param name="srcid">本地的ID</param>
        /// <param name="memid">成员ID</param> 
        void GetValueEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt16 memid);

        /// <summary>
        /// 向远端SetValue
        /// </summary>
        /// <param name="s1">远端对应的连接代理</param>
        /// <param name="destid">远端的ID</param>
        /// <param name="srcid">本地的ID</param>
        /// <param name="memid">成员ID</param>
        /// <param name="value">成员内容</param>
        void SetValueEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt16 memid, byte[] value);

        /// <summary>
        /// 向远端CallFunction
        /// </summary>
        /// <param name="s1">远端对应的连接代理 </param>
        /// <param name="destid">远端对象ID</param>
        /// <param name="srcid">本地对象ID</param>
        /// <param name="funcid">函数ID</param>
        /// <param name="param">函数参数</param>
96 97 98
        /// <param name="asyncDelegate">在其上调用异步调用的委托对象</param>
        /// <param name="asyncContext">作为 BeginInvoke 方法调用的最后一个参数而提供的对象</param>
        UInt32 CallFunctionEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt16 funcid, byte[] param, AsyncCBHandler asyncDelegate, object asyncContext);
潘栩锋's avatar
潘栩锋 committed
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165

        /// <summary>
        /// 向远端CallFunction
        /// </summary>
        /// <param name="s1">远端对应的连接代理 </param>
        /// <param name="destid">远端对象ID</param>
        /// <param name="srcid">本地对象ID</param>
        /// <param name="funcid">函数ID</param>
        /// <param name="param">函数参数</param>
        UInt32 CallFunctionEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt16 funcid, byte[] param);
    }
    public interface IFObjSysAsServer
    {
        /// <summary>
        /// 添加OBJ 入 本地OBJSys
        /// </summary>
        /// <param name="obj"></param>
        void ObjAdd(IFObj obj);

        /// <summary>
        /// 本地OBJSys 删除指定OBJ
        /// </summary>
        /// <param name="obj"></param>
        void ObjRemove(IFObj obj);
        /// <summary>
        /// 启动本地OBJSys网络
        /// </summary>
        /// <param name="ep">本地地址</param>
        /// <param name="objids">建立成功后,通知这些obj</param>
        void Start_Conn_Server(IPEndPoint ep, params UInt32[] objids);
        /// <summary>
        /// 指定推送到某个远端
        /// </summary>
        /// <param name="srcobj">本地obj</param>
        /// <param name="infoid">信息码</param>
        /// <param name="infodata">信息内容</param>
        /// <param name="s1">连接conn</param>
        /// <param name="destid">目标obj</param>
        void PushObjInfoEx(IFObj srcobj, UInt16 infoid, byte[] infodata, IFConn s1, UInt32 destid);

        /// <summary>
        /// 推送到远端,系统判定根据敏感对象推送
        /// </summary>
        /// <param name="srcobj">本地obj</param>
        /// <param name="infoid">信息码</param>
        /// <param name="infodata">信息内容</param>
        void PushObjInfoEx(IFObj srcobj, UInt16 infoid, byte[] infodata);

        /// <summary>
        /// 推送到远端,系统判定根据敏感对象推送,但不推送给特定某对象
        /// </summary>
        /// <param name="srcobj">本地的obj</param>
        /// <param name="infoid">信息码</param>
        /// <param name="infodata">信息内容</param>
        /// <param name="except_s1">排除在外的连接conn</param>
        /// <param name="except_destid">排除在外的目标obj</param>
        void PushObjInfoEx_except(IFObj srcobj, UInt16 infoid, byte[] infodata, IFConn except_s1, UInt32 except_destid);


        /// <summary>
        /// 回复 客户端的CallFunction
        /// </summary>
        /// <param name="s1">客户端对应的连接代理 </param>
        /// <param name="destid">本地服务端的对象ID</param>
        /// <param name="srcid">客户端的对象ID</param>
        /// <param name="magic">交易码</param>
        /// <param name="funcid">函数ID</param>
潘栩锋's avatar
潘栩锋 committed
166
        /// <param name="retdata">函数参数</param>
潘栩锋's avatar
潘栩锋 committed
167 168 169
        void PushCallFunctionEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt32 magic, UInt16 funcid, byte[] retdata);
    }
}