using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
namespace FObjBase
{
public interface IFObjSysAsClient
{
///
/// 添加OBJ 入 本地OBJSys
///
///
void ObjAdd(IFObj obj);
///
/// 获取一个没有被分配的 Obj ID
///
///
UInt32 GetFreeObjID();
///
/// 创建了一个远端服务的客户代理, 删除这个代理;
/// 还需要通知远端,这个代理已经不存在,与它相关的推送,都要关闭
/// 当没有一个obj 与远端服务连接,socket也会被释放
///
///
///
void ObjRemove(IFObj obj, IFConn conn);
///
/// 连接到远端的OBJSys连接
///
/// 远端地址
/// 连接成功后,通知这些obj
///
TCPCConn Connect_to_Another_OBJSys(IPEndPoint ep, params UInt32[] objids);
///
/// 断开到远端OBJSys的连接
///
/// 远端地址
/// 连接成功后,通知这些obj
///
void Disconnect_to_Another_OBJSys(IPEndPoint ep, params UInt32[] objids);
///
/// 注册本地obj 为远端obj的敏感对象,得到远端obj的推送消息
///
/// 远端对应的连接代理
/// 远端的ID
/// 本地obj
/// 注册的敏感源
/// 动作,添加?删除?
void SenseConfigEx(IFConn s1, UInt32 objid, UInt32 senobjid, UInt32 sense_mask, SENSE_CONFIG action);
///
/// 对外发送消息
///
/// 远端对应的连接代理
/// 远端的ID
/// 本地的ID
/// 交易码
/// 信息码
/// 信息内容
void SendMessageEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt32 magic, UInt16 info_no, byte[] info_data);
///
/// 向远端GetValue
///
/// 远端对应的连接代理
/// 远端的ID
/// 本地的ID
/// 成员ID
void GetValueEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt16 memid);
///
/// 向远端SetValue
///
/// 远端对应的连接代理
/// 远端的ID
/// 本地的ID
/// 成员ID
/// 成员内容
void SetValueEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt16 memid, byte[] value);
///
/// 向远端CallFunction
///
/// 远端对应的连接代理
/// 远端对象ID
/// 本地对象ID
/// 函数ID
/// 函数参数
/// 在其上调用异步调用的委托对象
/// 作为 BeginInvoke 方法调用的最后一个参数而提供的对象
UInt32 CallFunctionEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt16 funcid, byte[] param, object AsyncDelegate, object AsyncState);
///
/// 向远端CallFunction
///
/// 远端对应的连接代理
/// 远端对象ID
/// 本地对象ID
/// 函数ID
/// 函数参数
UInt32 CallFunctionEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt16 funcid, byte[] param);
}
public interface IFObjSysAsServer
{
///
/// 添加OBJ 入 本地OBJSys
///
///
void ObjAdd(IFObj obj);
///
/// 本地OBJSys 删除指定OBJ
///
///
void ObjRemove(IFObj obj);
///
/// 启动本地OBJSys网络
///
/// 本地地址
/// 建立成功后,通知这些obj
void Start_Conn_Server(IPEndPoint ep, params UInt32[] objids);
///
/// 指定推送到某个远端
///
/// 本地obj
/// 信息码
/// 信息内容
/// 连接conn
/// 目标obj
void PushObjInfoEx(IFObj srcobj, UInt16 infoid, byte[] infodata, IFConn s1, UInt32 destid);
///
/// 推送到远端,系统判定根据敏感对象推送
///
/// 本地obj
/// 信息码
/// 信息内容
void PushObjInfoEx(IFObj srcobj, UInt16 infoid, byte[] infodata);
///
/// 推送到远端,系统判定根据敏感对象推送,但不推送给特定某对象
///
/// 本地的obj
/// 信息码
/// 信息内容
/// 排除在外的连接conn
/// 排除在外的目标obj
void PushObjInfoEx_except(IFObj srcobj, UInt16 infoid, byte[] infodata, IFConn except_s1, UInt32 except_destid);
///
/// 回复 客户端的CallFunction
///
/// 客户端对应的连接代理
/// 本地服务端的对象ID
/// 客户端的对象ID
/// 交易码
/// 函数ID
/// 函数参数
void PushCallFunctionEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt32 magic, UInt16 funcid, byte[] retdata);
}
}