public async Task <Tuple <EstablishPresenceResult, string> > EstablishChildConnectionToRegionAsync(ScenePresence avatar, AgentCircuitData a, SimpleRegionInfo reg) { string capsPath = CapsUtil.GetFullCapsSeedURL(reg.InsecurePublicHTTPServerURI, a.CapsPath); Tuple <bool, string> createResult = await m_interregionCommsOut.SendCreateRemoteChildAgentAsync(reg, a); if (createResult.Item1) { IPEndPoint endPoint = reg.ExternalEndPoint; IEventQueue eq = avatar.Scene.RequestModuleInterface <IEventQueue>(); if (!eq.EnableSimulator(reg.RegionHandle, endPoint, avatar.UUID)) { m_log.ErrorFormat("[INTERGRID]: Could not enqueue eq.EnableSimulator for {0}", avatar.Name); return(Tuple.Create(EstablishPresenceResult.ClientSignallingFailed, "Could not enqueue EnableSimulator")); } if (!eq.EstablishAgentCommunication(avatar.UUID, endPoint, capsPath)) { m_log.ErrorFormat("[INTERGRID]: Could not enqueue eq.EstablishAgentCommunication for {0}", avatar.Name); return(Tuple.Create(EstablishPresenceResult.ClientSignallingFailed, "Could not enqueue EstablishAgentCommunication")); } return(Tuple.Create(EstablishPresenceResult.Success, String.Empty)); } else { return(Tuple.Create(EstablishPresenceResult.ErrorInformingRegion, createResult.Item2)); } }