public IAgentInfo GetAgent(UUID PrincipalID) { IAgentInfo agent; if (!m_cache.TryGetValue(PrincipalID, out agent)) return agent; Dictionary<string, object> sendData = new Dictionary<string, object>(); sendData["PRINCIPALID"] = PrincipalID.ToString(); sendData["METHOD"] = "getagent"; string reqString = WebUtils.BuildQueryString(sendData); try { foreach (string m_ServerURI in m_ServerURIs) { string reply = SynchronousRestFormsRequester.MakeRequest("POST", m_ServerURI + "/auroradata", reqString); if (reply != string.Empty) { Dictionary<string, object> replyData = WebUtils.ParseXmlResponse(reply); if (replyData != null) { if (!replyData.ContainsKey("result")) return null; Dictionary<string, object>.ValueCollection replyvalues = replyData.Values; foreach (object f in replyvalues) { if (f is Dictionary<string, object>) { agent = new IAgentInfo(); agent.FromKVP((Dictionary<string, object>)f); m_cache.AddOrUpdate(PrincipalID, agent, new TimeSpan(0, 30, 0)); } else m_log.DebugFormat("[AuroraRemoteAgentConnector]: GetAgent {0} received invalid response type {1}", PrincipalID, f.GetType()); } // Success return agent; } else m_log.DebugFormat("[AuroraRemoteAgentConnector]: GetAgent {0} received null response", PrincipalID); } } } catch (Exception e) { m_log.DebugFormat("[AuroraRemoteAgentConnector]: Exception when contacting server: {0}", e.ToString()); } return null; }
public IAgentInfo GetAgent(UUID PrincipalID) { IAgentInfo agent; if (!m_cache.TryGetValue(PrincipalID, out agent)) return agent; Dictionary<string, object> sendData = new Dictionary<string, object>(); sendData["PRINCIPALID"] = PrincipalID.ToString(); sendData["METHOD"] = "getagent"; string reqString = WebUtils.BuildQueryString(sendData); try { List<string> m_ServerURIs = m_registry.RequestModuleInterface<IConfigurationService>().FindValueOf(PrincipalID.ToString(), "RemoteServerURI"); foreach (Dictionary<string, object> replyData in from m_ServerURI in m_ServerURIs select SynchronousRestFormsRequester.MakeRequest("POST", m_ServerURI + "/auroradata", reqString) into reply where reply != string.Empty select WebUtils.ParseXmlResponse(reply)) { if (replyData != null) { if (!replyData.ContainsKey("result")) return null; Dictionary<string, object>.ValueCollection replyvalues = replyData.Values; foreach (object f in replyvalues) { if (f is Dictionary<string, object>) { agent = new IAgentInfo(); agent.FromKVP((Dictionary<string, object>) f); m_cache.AddOrUpdate(PrincipalID, agent, new TimeSpan(0, 30, 0)); } else MainConsole.Instance.DebugFormat( "[AuroraRemoteAgentConnector]: GetAgent {0} received invalid response type {1}", PrincipalID, f.GetType()); } // Success return agent; } else MainConsole.Instance.DebugFormat("[AuroraRemoteAgentConnector]: GetAgent {0} received null response", PrincipalID); } } catch (Exception e) { MainConsole.Instance.DebugFormat("[AuroraRemoteAgentConnector]: Exception when contacting server: {0}", e); } return null; }