/// <summary> /// /// </summary> /// <param name="avatarId"></param> /// <param name="avatarDna"></param> /// <param name="updateAvatarDnaServiceFinishedCallback"></param> public static void UpdateAvatarDna(AvatarId avatarId, XmlDocument avatarDna, System.Action <XmlDocument> updateAvatarDnaServiceFinishedCallback) { mLogger.DebugFormat("UpdateAvatarDna called avatarId={0}", avatarId); WebServiceRequest updateAvatarDna = new WebServiceRequest(StateServerConfig.WebServicesBaseUrl, "Avatars", "UpdateAvatarDNA"); updateAvatarDna.AddParam(kAvatarId, avatarId.ToString()); updateAvatarDna.AddParam(kAvatarDna, avatarDna.OuterXml); updateAvatarDna.GetWebResponseAsync(delegate(XmlDocument xmlResponse) { mLogger.DebugFormat("UpdateAvatarDna responded avatarId={0}", avatarId); updateAvatarDnaServiceFinishedCallback(xmlResponse); }); }
/// <summary> /// /// </summary> /// <param name="serverAccount"></param> /// <param name="defaultAvatarId"></param> /// <param name="createAvatarForUserServiceCallback"></param> public static void CreateAvatarForUser(ServerAccount serverAccount, AvatarId defaultAvatarId, Action <XmlDocument> createAvatarForUserServiceCallback) { mLogger.DebugFormat("CreateAvatarForUser called accountId={0} defaultAvatarId={1}", serverAccount.AccountId, defaultAvatarId); WebServiceRequest getAvatarList = new WebServiceRequest(StateServerConfig.WebServicesBaseUrl, "Avatars", "CreateAvatar"); getAvatarList.AddParam(kAccountId, serverAccount.AccountId.ToString()); getAvatarList.AddParam(kDefaultAvatarId, defaultAvatarId.ToString()); getAvatarList.GetWebResponseAsync(delegate(XmlDocument xmlResponse) { mLogger.DebugFormat("CreateAvatarForUser responded accountId={0} defaultAvatarId={1}", serverAccount.AccountId, defaultAvatarId); createAvatarForUserServiceCallback(xmlResponse); }); }
private void RecvChat(Message message) { string chatText = (string)message.Data[0]; if (chatText.Length > mMaxChatLength) { // Either the client is hacked or we have a bug. Ideally we would boot them here. mLogger.Warn("Client sent an excessively large chat string. Dropping message. AvID: " + mAvatarId.ToString()); return; } // Filter chat and broadcast the message back out string filteredChat = TextFilter.Instance.ReplaceNaughtyWords(chatText); if (filteredChat != null) { message.Data[0] = filteredChat; } ChatLog.LogChatResult(mAvatarId.ToString(), "", chatText, filteredChat); BroadcastMessage(message); }
public void CreateNewAvatarForAccount(Guid sessionId, ZoneId zoneId, ServerAccount serverAccount, AvatarId defaultAvatarId, System.Action <bool> createAvatarFinishedCallback) { Action <XmlDocument> createAvatarServiceCallback = delegate(XmlDocument xmlResponse) { XmlNode avatarXmlNode = xmlResponse.SelectSingleNode("Avatars/Avatar"); if (avatarXmlNode != null) { Metrics.Log(LogGlobals.CATEGORY_ACCOUNT, LogGlobals.EVENT_AVATAR_CREATED, LogGlobals.AVATAR_ID_LABEL, defaultAvatarId.ToString(), serverAccount.AccountId.ToString()); GetAvatarServiceResponse(avatarXmlNode, serverAccount.Nickname, sessionId, zoneId, createAvatarFinishedCallback); } else { StateServerAssert.Assert(new System.Exception("Error: Could not create avatar: " + xmlResponse.InnerText)); createAvatarFinishedCallback(false); } }; AvatarManagerServiceAPI.CreateAvatarForUser(serverAccount, defaultAvatarId, createAvatarServiceCallback); }
/// <summary> /// Handle login request from client /// </summary> /// <param name="loginMessage"></param> private void HandleLoginRequest(Message loginMessage, Guid senderId) { Guid sessionId = senderId; string fbAccountId = CheckType.TryAssignType <string>(loginMessage.Data[0]); string fbSessionKey = CheckType.TryAssignType <string>(loginMessage.Data[1]); string nickName = CheckType.TryAssignType <string>(loginMessage.Data[2]); string firstName = CheckType.TryAssignType <string>(loginMessage.Data[3]); string lastName = CheckType.TryAssignType <string>(loginMessage.Data[4]); string campaignId = CheckType.TryAssignType <string>(loginMessage.Data[5]); string referrerId = CheckType.TryAssignType <string>(loginMessage.Data[6]); AvatarId avatarId = CheckType.TryAssignType <AvatarId>(loginMessage.Data[7]); Stopwatch loginTimer = new Stopwatch(); loginTimer.Elapsed.Add(loginMessage.TimeSinceMessageWasCreated); loginTimer.Start(); // TODO: Move the ipaddress handling within the extension string userIpAddress = mServerStateMachine.ServerMessageProcessor.ServerReflector.GetClientIPAddress(senderId); mLogger.Info(String.Format("HandleLoginRequest | sessionId={0} | fbAcctId={1} | fbSessionKey={2} | nickname={3} | firstname={4} | lastname={5} | avatarId={6} | ip={7}", sessionId, fbAccountId, fbSessionKey, nickName, firstName, lastName, avatarId.ToString(), userIpAddress)); Action <ServerAccount> getAccountForUserCallback = delegate(ServerAccount serverAccount) { mLogger.Debug("GetAccountForUserCallback"); try { if (serverAccount != null) { mServerStateMachine.ProcessUserLogin(sessionId, serverAccount, fbSessionKey, avatarId, loginTimer); } else { mLogger.Warn("LoginFailed|sessionId=" + sessionId); Message loginFailMessage = new Message(MessageType.Connect, MessageSubType.InvalidLogin, new List <object>()); mServerStateMachine.SendMessageToReflector(loginFailMessage, sessionId); } } catch (System.Exception ex) { System.Diagnostics.StackTrace currentStackTrace = new System.Diagnostics.StackTrace(); mLogger.Error("Got an exception in getAccountForUserCallback", ex); } }; mServerStateMachine.UsersManager.GetAccountForUser(fbAccountId, fbSessionKey, nickName, firstName, lastName, userIpAddress, campaignId, referrerId, getAccountForUserCallback); }