예제 #1
0
 public static byte[] Serialize(BasePacket packet)
 {
     using (MemoryStream memoryStream = new MemoryStream())
     {
         BinaryFormatter binaryFormatter = new BinaryFormatter();
         binaryFormatter.Serialize(memoryStream, packet);
         return memoryStream.ToArray();
     }
 }
예제 #2
0
        private BaseResponse _handler_Invoke(BasePacket packet)
        {
            InvokeRequest p = packet as InvokeRequest;

            ProxyHolder proxy = this.GetProxyByID(p.ObjectID);

            if (proxy == null)
                throw new Exception("Proxy Nr. not found: " + p.ObjectID);

            return new InvokeResponse(proxy.Invoke(p.Name, p.Arguments), p);
        }
예제 #3
0
        private BaseResponse _handler_GetMember(BasePacket packet)
        {
            GetMemberRequest p = packet as GetMemberRequest;

            ProxyHolder proxy = this.GetProxyByID(p.ObjectID);

            if(proxy == null)
                throw new Exception("Proxy Nr. not found: " + p.ObjectID);

            return new GetMemberResponse(proxy.GetMember(p.Member, p.ReturnType), p);
        }
예제 #4
0
        public void Send(BasePacket packet)
        {
            byte[] data = packet.Serialize();

            byte[] outBuffer = new byte[data.Length + 4];

            ByteWriter.WriteInt32_BE(data.Length, outBuffer, 0);

            Array.Copy(data, 0, outBuffer, 4, data.Length);

            this._socket.Send(outBuffer);
        }
예제 #5
0
 public BaseResponse WaitForResponse(BasePacket id, int timeout)
 {
     long end = DateTime.Now.Ticks + timeout * TimeSpan.TicksPerMillisecond;
     BaseResponse resp = null;
     while (end > DateTime.Now.Ticks)
     {
         resp = this.GetResponse(id);
         if (resp != null)
             break;
         Thread.Sleep(50);
     }
     return resp;
 }
예제 #6
0
 public BaseResponse GetResponse(BasePacket id)
 {
     BaseResponse resp = _responses.ReturnFirstTrue(response => response.ResponseFor == id.ID);
     if (resp != null) _responses.Remove(resp);
     return resp;
 }
예제 #7
0
 public void AddResponseCallback(Action<BaseResponse> callback, BasePacket forPacket)
 {
     _responsCallbacks.Add(forPacket.ID, callback);
 }
예제 #8
0
 private BaseResponse _handler_SetMember(BasePacket packet)
 {
     _addresponse((BaseResponse)packet);
     return null;
 }
예제 #9
0
 private BaseResponse _handler_Proxy(BasePacket packet)
 {
     _addresponse((BaseResponse)packet);
     return null;
 }
예제 #10
0
 private BaseResponse _handler_Exception(BasePacket packet)
 {
     _addresponse((BaseResponse)packet);
     return null;
 }
예제 #11
0
 public GetMemberResponse(Object result, BasePacket resp)
     : base(resp)
 {
     this.Result = result;
 }
예제 #12
0
 public ProxyResponse(int objectID, BasePacket resp)
     : base(resp)
 {
     this.ObjectID = objectID;
 }
예제 #13
0
 public SetMemberResponse(bool success, BasePacket resp)
     : base(resp)
 {
     this.Success = success;
 }
예제 #14
0
        private BaseResponse _handler_Proxy(BasePacket packet)
        {
            ProxyRequest p = packet as ProxyRequest;

            ProxyHolder proxy = this.GetProxyByName(p.Name);

            if (proxy == null)
                throw new Exception("Proxy not found: " + p.Name);

            return new ProxyResponse(proxy.ObjectID, p);
        }
예제 #15
0
        private BaseResponse _handler_SetMember(BasePacket packet)
        {
            SetMemberRequest p = packet as SetMemberRequest;

            ProxyHolder proxy = this.GetProxyByID(p.ObjectID);

            if (proxy == null)
                throw new Exception("Proxy Nr. not found: " + p.ObjectID);

            return new SetMemberResponse(proxy.SetMember(p.Name, p.Value), p);
        }
예제 #16
0
 public ExceptionResponse(string message, BasePacket resp)
     : base(resp)
 {
     this.Message = message;
 }
예제 #17
0
 public BaseResponse(BasePacket resp)
 {
     this.ResponseFor = resp.ID;
 }
예제 #18
0
 public InvokeResponse(object result, BasePacket resp)
     : base(resp)
 {
     this.Result = result;
 }