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
96
97
98
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
166
167
168
169
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="asyncContext">作为 BeginInvoke 方法调用的最后一个参数而提供的对象</param>
UInt32 CallFunctionEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt16 funcid, byte[] param, AsyncCBHandler asyncDelegate, object asyncContext);
/// <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="retdata">函数参数</param>
void PushCallFunctionEx(IFConn s1, UInt32 destid, UInt32 srcid, UInt32 magic, UInt16 funcid, byte[] retdata);
}
}