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> /// <param name="AsyncDelegate">在其上调用异步调用的委托对象</param> /// <param name="AsyncState">作为 BeginInvoke 方法调用的最后一个参数而提供的对象</param> UInt32 CallFunctionEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt16 funcid, byte[] param, object AsyncDelegate, object AsyncState); /// <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> /// <param name="param">函数参数</param> /// <param name="AsyncDelegate">在其上调用异步调用的委托对象</param> /// <param name="AsyncState">作为 BeginInvoke 方法调用的最后一个参数而提供的对象</param> void PushCallFunctionEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt32 magic, UInt16 funcid, byte[] retdata); } }