Ejemplo n.º 1
0
 public virtual void OnErrorCallback(int cid, RemoteException exception)
 {
     if (!RemoteCallingRecode.ContainsKey(cid))
     {
         return;
     }
     RemoteCallingRecode[cid].OnError(exception);
     RemoteCallingRecode.Remove(cid);
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }