/// <summary> /// Informs a region about an Agent /// </summary> /// <param name="TalkingAbout">User to talk about</param> /// <param name="UserToUpdate">User we're sending this too (contains the region)</param> public void SendRegionPresenceUpdate(UserPresenceData TalkingAbout, UserPresenceData UserToUpdate) { // TODO: Fill in pertenant Presence Data from 'TalkingAbout' RegionProfileData whichRegion = new RegionProfileData(); if (lookupRegion) { handlerGetRegionData = OnGetRegionData; if (handlerGetRegionData != null) { whichRegion = handlerGetRegionData(UserToUpdate.regionData.regionHandle); } //RegionProfileData rp = RegionProfileData.RequestSimProfileData(UserToUpdate.regionData.regionHandle, gridserverurl, gridserversendkey, gridserverrecvkey); //whichRegion = rp; } else { whichRegion = UserToUpdate.regionData; } //whichRegion.httpServerURI if (whichRegion != null) { Hashtable PresenceParams = new Hashtable(); PresenceParams.Add("agent_id",TalkingAbout.agentData.AgentID.ToString()); PresenceParams.Add("notify_id",UserToUpdate.agentData.AgentID.ToString()); if (TalkingAbout.OnlineYN) PresenceParams.Add("status","TRUE"); else PresenceParams.Add("status","FALSE"); ArrayList SendParams = new ArrayList(); SendParams.Add(PresenceParams); m_log.InfoFormat("[PRESENCE]: Informing {0}@{1} at {2} about {3}", TalkingAbout.agentData.firstname + " " + TalkingAbout.agentData.lastname, whichRegion.regionName, whichRegion.httpServerURI, UserToUpdate.agentData.firstname + " " + UserToUpdate.agentData.lastname); // Send XmlRpcRequest RegionReq = new XmlRpcRequest("presence_update", SendParams); try { // XmlRpcResponse RegionResp = RegionReq.Send(whichRegion.httpServerURI, 6000); RegionReq.Send(whichRegion.httpServerURI, 6000); } catch (WebException) { m_log.WarnFormat("[INFORM]: failed notifying region {0} containing user {1} about {2}", whichRegion.regionName, UserToUpdate.agentData.firstname + " " + UserToUpdate.agentData.lastname, TalkingAbout.agentData.firstname + " " + TalkingAbout.agentData.lastname); } } else { m_log.Info("[PRESENCEUPDATER]: Region data was null skipping"); } handlerDone = OnDone; if (handlerDone != null) { handlerDone(this); } }
/// <summary> /// Informs a region about an Agent /// </summary> /// <param name="TalkingAbout">User to talk about</param> /// <param name="UserToUpdate">User we're sending this too (contains the region)</param> public void SendRegionPresenceUpdate(UserPresenceData TalkingAbout, UserPresenceData UserToUpdate) { // TODO: Fill in pertenant Presence Data from 'TalkingAbout' RegionProfileData whichRegion = new RegionProfileData(); if (lookupRegion) { handlerGetRegionData = OnGetRegionData; if (handlerGetRegionData != null) { whichRegion = handlerGetRegionData(UserToUpdate.regionData.regionHandle); } //RegionProfileData rp = RegionProfileData.RequestSimProfileData(UserToUpdate.regionData.regionHandle, gridserverurl, gridserversendkey, gridserverrecvkey); //whichRegion = rp; } else { whichRegion = UserToUpdate.regionData; } //whichRegion.httpServerURI if (whichRegion != null) { Hashtable PresenceParams = new Hashtable(); PresenceParams.Add("agent_id", TalkingAbout.agentData.AgentID.ToString()); PresenceParams.Add("notify_id", UserToUpdate.agentData.AgentID.ToString()); if (TalkingAbout.OnlineYN) { PresenceParams.Add("status", "TRUE"); } else { PresenceParams.Add("status", "FALSE"); } ArrayList SendParams = new ArrayList(); SendParams.Add(PresenceParams); m_log.InfoFormat("[PRESENCE]: Informing {0}@{1} at {2} about {3}", TalkingAbout.agentData.firstname + " " + TalkingAbout.agentData.lastname, whichRegion.regionName, whichRegion.httpServerURI, UserToUpdate.agentData.firstname + " " + UserToUpdate.agentData.lastname); // Send XmlRpcRequest RegionReq = new XmlRpcRequest("presence_update", SendParams); try { // XmlRpcResponse RegionResp = RegionReq.Send(whichRegion.httpServerURI, 6000); RegionReq.Send(whichRegion.httpServerURI, 6000); } catch (WebException) { m_log.WarnFormat("[INFORM]: failed notifying region {0} containing user {1} about {2}", whichRegion.regionName, UserToUpdate.agentData.firstname + " " + UserToUpdate.agentData.lastname, TalkingAbout.agentData.firstname + " " + TalkingAbout.agentData.lastname); } } else { m_log.Info("[PRESENCEUPDATER]: Region data was null skipping"); } handlerDone = OnDone; if (handlerDone != null) { handlerDone(this); } }