using FLY.FeedbackRenZiJia.Common;
using FLY.FeedbackRenZiJia.IService;
using FLY.FeedbackRenZiJia.OBJ_INTERFACE;
using FObjBase;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FLY.FeedbackRenZiJia.Client
{
public class SnapShotBufServiceClient: FObj, ISnapShotBuf
{
IFConn mConn;
UInt32 mServerID;
public SnapShotBufServiceClient()
{
mServerID = OBJ_INTERFACE_ID.SNAPSHOT_ID;
}
#region IFObj
public override void ConnectNotify(IFConn from)
{
mConn = from;
//IsConnected = from.IsConnected;
if (from.IsConnected)
{
}
}
public override void PushCallFunction(IFConn from, uint srcid, uint magic, ushort funcid, byte[] retdata, object AsyncDelegate, object AsyncState)
{
switch (funcid)
{
case SNAPSHOT_OBJ_INTERFACE.CALL_GET_SNAPSHOT:
{
if (retdata == null)
{
((AsyncCBHandler)AsyncDelegate)(AsyncState, null);
}
else
{
FlyData_SnapShot p = new FlyData_SnapShot();
if (!p.TryParse(retdata))
return;
((AsyncCBHandler)AsyncDelegate)(AsyncState, p);
}
}
break;
///
/// request:null
/// reponse:Pack_IntList
///
case SNAPSHOT_OBJ_INTERFACE.CALL_GET_SNAPSHOT_LIST:
{
if (retdata == null)
{
((AsyncCBHandler)AsyncDelegate)(AsyncState, null);
}
else
{
SNAPSHOT_OBJ_INTERFACE.Pack_IntList p = new SNAPSHOT_OBJ_INTERFACE.Pack_IntList();
if (!p.TryParse(retdata))
return;
((AsyncCBHandler)AsyncDelegate)(AsyncState, p.list);
}
}
break;
}
}
#endregion
#region 快照
///
/// 获取快照 返回类型为 FlyData_SnapShot
///
/// 记录点
///
///
public void Get(int bookmark, AsyncCBHandler AsyncDelegate, object AsyncState)
{
FObjSys.Current.CallFunctionEx(
mConn, mServerID, ID,
SNAPSHOT_OBJ_INTERFACE.CALL_GET_SNAPSHOT,
new SNAPSHOT_OBJ_INTERFACE.Pack_Int()
{
num = bookmark
}.ToBytes(),
AsyncDelegate, AsyncState);
}
///
/// 设置快照
///
/// FlyData_SnapShot
public void Set(FlyData_SnapShot f)
{
FObjSys.Current.CallFunctionEx(
mConn, mServerID, ID,
SNAPSHOT_OBJ_INTERFACE.CALL_SET_SNAPSHOT,
f.ToBytes());
}
///
/// 删除快照
///
///
public void Del(int bookmark)
{
FObjSys.Current.CallFunctionEx(
mConn, mServerID, ID,
SNAPSHOT_OBJ_INTERFACE.CALL_DEL_SNAPSHOT,
new SNAPSHOT_OBJ_INTERFACE.Pack_Int()
{
num = bookmark
}.ToBytes());
}
///
/// 获取保存的快照列表 返回类型为 List<int>
///
///
///
public void GetList(AsyncCBHandler AsyncDelegate, object AsyncState)
{
FObjSys.Current.CallFunctionEx(
mConn, mServerID, ID,
SNAPSHOT_OBJ_INTERFACE.CALL_GET_SNAPSHOT_LIST,
null,
AsyncDelegate, AsyncState);
}
#endregion
}
}