aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Communications
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Communications')
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1UserServices.cs53
1 files changed, 53 insertions, 0 deletions
diff --git a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs b/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs
index 17b5a06..d486c40 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs
@@ -85,6 +85,58 @@ namespace OpenSim.Region.Communications.OGS1
85 (float) Convert.ToDecimal((string) data["home_look_z"])); 85 (float) Convert.ToDecimal((string) data["home_look_z"]));
86 86
87 return userData; 87 return userData;
88 }
89
90 /// <summary>
91 /// Get a user agent from the user server
92 /// </summary>
93 /// <param name="avatarID"></param>
94 /// <returns>null if the request fails</returns>
95 public UserAgentData GetAgentByUUID(LLUUID userId)
96 {
97 try
98 {
99 Hashtable param = new Hashtable();
100 param["avatar_uuid"] = userId.ToString();
101 IList parameters = new ArrayList();
102 parameters.Add(param);
103 XmlRpcRequest req = new XmlRpcRequest("get_agent_by_uuid", parameters);
104 XmlRpcResponse resp = req.Send(m_parent.NetworkServersInfo.UserURL, 6000);
105 Hashtable respData = (Hashtable) resp.Value;
106 if (respData.Contains("error_type"))
107 {
108 m_log.Warn("[GRID]: " +
109 "Error sent by user server when trying to get agent: (" +
110 (string) respData["error_type"] +
111 "): " + (string)respData["error_desc"]);
112 return null;
113 }
114 LLUUID sessionid = LLUUID.Zero;
115
116 UserAgentData userAgent = new UserAgentData();
117 userAgent.Handle = Convert.ToUInt64((string)respData["handle"]);
118 Helpers.TryParse((string)respData["sessionid"], out sessionid);
119 userAgent.SessionID = sessionid;
120
121 if ((string)respData["agent_online"] == "TRUE")
122 {
123 userAgent.AgentOnline = true;
124 }
125 else
126 {
127 userAgent.AgentOnline = false;
128 }
129
130 return userAgent;
131 }
132 catch (Exception e)
133 {
134 m_log.ErrorFormat(
135 "[OGS1 USER SERVICES]: Error when trying to fetch agent data by uuid from remote user server: {0}",
136 e);
137 }
138
139 return null;
88 } 140 }
89 141
90 public AvatarAppearance ConvertXMLRPCDataToAvatarAppearance(Hashtable data) 142 public AvatarAppearance ConvertXMLRPCDataToAvatarAppearance(Hashtable data)
@@ -335,6 +387,7 @@ namespace OpenSim.Region.Communications.OGS1
335 return null; 387 return null;
336 } 388 }
337 389
390
338 public void clearUserAgent(LLUUID avatarID) 391 public void clearUserAgent(LLUUID avatarID)
339 { 392 {
340 // TODO: implement 393 // TODO: implement