public virtual void OnErrorCallback(int cid, RemoteException exception) { if (!RemoteCallingRecode.ContainsKey(cid)) { return; } RemoteCallingRecode[cid].OnError(exception); RemoteCallingRecode.Remove(cid); }
public virtual void OnAPIReturn(int cid, Stream returnStream) { if (!RemoteCallingRecode.ContainsKey(cid)) { return; } CytarStreamReader cr = new CytarStreamReader(returnStream); if (RemoteCallingRecode[cid].ReturnType == typeof(void)) { RemoteCallingRecode[cid].Return(null); } else { RemoteCallingRecode[cid].Return(cr.ReadObject(RemoteCallingRecode[cid].ReturnType)); } RemoteCallingRecode.Remove(cid); }
protected virtual RemoteAPIInfo CallRemoteAPIAndGetInfo(string apiName, Type returnType, Action <object> returnCallback, Action <RemoteException> errorCallback, params object[] param) { var callingID = NextCallingID; RemoteAPIInfo remoteAPI = new RemoteAPIInfo(apiName, callingID, returnType, returnCallback, errorCallback); RemoteCallingRecode.Add(remoteAPI.CallingID, remoteAPI); MemoryStream ms = new MemoryStream(); CytarStreamWriter cw = new CytarStreamWriter(ms); cw.Write(callingID); cw.Write(apiName); foreach (var arg in param) { cw.Write(arg); } ms.Position = 0; SendPackage(ms); return(remoteAPI); }