--- trunk/ModularRex/RexNetwork/RexClientView.cs 2008/11/27 12:11:01 12 +++ trunk/ModularRex/RexNetwork/RexClientView.cs 2008/12/02 14:38:51 14 @@ -15,10 +15,14 @@ { public delegate void RexAppearanceDelegate(RexClientView sender); - public delegate void RexFaceExpressionDelegate(RexClientView sender, List vParams); + public delegate void RexFaceExpressionDelegate(RexClientView sender, List parameters); public delegate void RexAvatarProperties(RexClientView sender, List parameters); + public delegate void ReceiveRexStartUp(RexClientView remoteClient, UUID agentID, string status); + + public delegate void ReceiveRexClientScriptCmd(RexClientView remoteClient, UUID agentID, List parameters); + /// /// Inherits from LLClientView the majority of functionality /// Overrides and extends for Rex-specific functionality. @@ -44,6 +48,8 @@ public event RexAppearanceDelegate OnRexAppearance; public event RexFaceExpressionDelegate OnRexFaceExpression; public event RexAvatarProperties OnRexAvatarProperties; + public event ReceiveRexStartUp OnReceiveRexStartUp; + public event ReceiveRexClientScriptCmd OnReceiveRexClientScriptCmd; public RexClientView(EndPoint remoteEP, IScene scene, AssetCache assetCache, LLPacketServer packServer, AuthenticateResponse authenSessions, UUID agentId, @@ -146,8 +152,14 @@ get { return m_rexAuthURL; } set { - m_rexAuthURL = value; - + if (value.Contains("@")) + { + m_rexAuthURL = "http://" + value.Split('@')[1]; + } + else + { + m_rexAuthURL = value; + } // Request Agent Properties Asynchronously ThreadPool.QueueUserWorkItem(RequestProperties); } @@ -189,6 +201,22 @@ } } + if (method == "rexscr") + { + if (OnReceiveRexClientScriptCmd != null) + { + OnReceiveRexClientScriptCmd(this, AgentId, args); + } + } + + if (method == "RexStartup") + { + if (OnReceiveRexStartUp != null) + { + OnReceiveRexStartUp(this, AgentId, args[0]); + } + } + m_log.Warn("[REXCLIENTVIEW] Unhandled GenericMessage (" + method + ") {"); foreach (string s in args) { @@ -282,15 +310,23 @@ m_log.Info("[REXCLIENT] Sending XMLRPC Request to " + RexAuthURL); XmlRpcResponse authreply = req.Send(RexAuthURL, 9000); - string rexAsAddress = ((Hashtable)authreply.Value)["as_address"].ToString(); - string rexSkypeURL = ((Hashtable)authreply.Value)["skype_url"].ToString(); - UUID userID = new UUID(((Hashtable) authreply.Value)["uuid"].ToString()); + if (!((Hashtable)authreply.Value).ContainsKey("error_type")) + { + string rexAsAddress = ((Hashtable)authreply.Value)["as_address"].ToString(); + string rexSkypeURL = ((Hashtable)authreply.Value)["skype_url"].ToString(); + UUID userID = new UUID(((Hashtable)authreply.Value)["uuid"].ToString()); - // Sanity check - if (userID == AgentId) + // Sanity check + if (userID == AgentId) + { + RexAvatarURL = rexAsAddress; + RexSkypeURL = rexSkypeURL; + } + } + else { - RexAvatarURL = rexAsAddress; - RexSkypeURL = rexSkypeURL; + //Error has occurred + m_log.Warn("[REXCLIENT]: User not found"); } }