/// <summary> /// /// </summary> /// <param name="requestObject"></param> private void DispatchRequest(IMPObject requestObject) { IMessage message = new Message(); if (requestObject.IsNull(CONTROLLER_ID)) { throw new Exception("Request rejected: No Controller ID in request!"); } if (requestObject.IsNull(ACTION_ID)) { throw new Exception("Request rejected: No Action ID in request!"); } message.Id = Convert.ToInt32(requestObject.GetShort(ACTION_ID)); message.Content = requestObject.GetMPObject(PARAM_ID); message.IsUDP = requestObject.ContainsKey(UDP_PACKET_ID); if (message.IsUDP) { message.PacketId = requestObject.GetLong(UDP_PACKET_ID); } int @byte = requestObject.GetByte(CONTROLLER_ID); IController controller = this.bitSwarm.GetController(@byte); if (controller == null) { throw new Exception("Cannot handle server response. Unknown controller, id: " + @byte); } controller.HandleMessage(message); }
private void FnLogin(IMessage msg) { IMPObject content = msg.Content; Hashtable data = new Hashtable(); if (content.IsNull(BaseRequest.KEY_ERROR_CODE)) { mpnet.MySelf = new MPUser(content.GetInt(LoginRequest.KEY_ID), content.GetUtfString(LoginRequest.KEY_USER_NAME)); mpnet.MySelf.PrivilegeId = content.GetShort(LoginRequest.KEY_PRIVILEGE_ID); mpnet.SetReconnectionSeconds(content.GetShort(LoginRequest.KEY_RECONNECTION_SECONDS)); mpnet.MySelf.PrivilegeId = content.GetShort(LoginRequest.KEY_PRIVILEGE_ID); data["user"] = mpnet.MySelf; data["data"] = content.GetMPObject(LoginRequest.KEY_PARAMS); MPEvent evt = new MPEvent(MPEvent.LOGIN, data); mpnet.DispatchEvent(evt); } else { short code = content.GetShort(BaseRequest.KEY_ERROR_CODE); data["errorCode"] = code; mpnet.DispatchEvent(new MPEvent(MPEvent.LOGIN_ERROR, data)); } }
/// <summary> /// /// </summary> /// <param name="evt"></param> public void HandleHandShake(IMPObject parameters) { IMPObject obj2 = parameters; if (obj2.IsNull(BaseRequest.KEY_ERROR_CODE)) { sessionToken = obj2.GetUtfString(HandshakeRequest.KEY_SESSION_TOKEN); bitSwarm.CompressionThreshold = obj2.GetInt(HandshakeRequest.KEY_COMPRESSION_THRESHOLD); bitSwarm.MaxMessageSize = obj2.GetInt(HandshakeRequest.KEY_MAX_MESSAGE_SIZE); if (Debug) { log.Debug(string.Format("Handshake response: tk => {0}, ct => {1}", sessionToken, bitSwarm.CompressionThreshold)); } if (bitSwarm.IsReconnecting) { bitSwarm.IsReconnecting = false; DispatchEvent(new MPEvent(MPEvent.CONNECTION_RESUME)); } else { isConnecting = false; Hashtable data = new Hashtable(); data["success"] = true; DispatchEvent(new MPEvent(MPEvent.CONNECTION, data)); } } else { short errorCode = obj2.GetShort(BaseRequest.KEY_ERROR_CODE); Hashtable hashtable2 = new Hashtable(); hashtable2["success"] = false; hashtable2["errorCode"] = errorCode; DispatchEvent(new MPEvent(MPEvent.CONNECTION, hashtable2)); } }