コード例 #1
0
        OSDMap GetRegion(OSDMap map)
        {
            OSDMap      resp       = new OSDMap();
            IRegionData regiondata = DataPlugins.RequestPlugin <IRegionData> ();

            if (regiondata != null && (map.ContainsKey("RegionID") || map.ContainsKey("Region")))
            {
                string regionName = map.ContainsKey("Region") ? map ["Region"].ToString().Trim() : "";
                UUID   regionID   = map.ContainsKey("RegionID") ? UUID.Parse(map ["RegionID"].ToString()) : UUID.Zero;
                // not used?? // UUID scopeID = map.ContainsKey ("ScopeID") ? UUID.Parse (map ["ScopeID"].ToString ()) : UUID.Zero;
                GridRegion region = null;
                if (regionID != UUID.Zero)
                {
                    region = regiondata.Get(regionID, null);
                }
                else if (regionName != string.Empty)
                {
                    region = regiondata.Get(regionName, null, null, null) [0];
                }
                if (region != null)
                {
                    resp ["Region"] = region.ToOSD();
                }
            }
            return(resp);
        }
コード例 #2
0
        public override OSDMap ToOSD()
        {
            OSDMap map = new OSDMap();

            map["Method"]      = "CreateObjectRequest";
            map["Destination"] = Destination.ToOSD();
            map["Object"]      = Object.ToBinaryXml2();
            return(map);
        }
コード例 #3
0
        public override OSDMap ToOSD()
        {
            OSDMap map = new OSDMap();

            map["Method"]      = "CloseAgentRequest";
            map["AgentID"]     = AgentID;
            map["Destination"] = Destination.ToOSD();
            return(map);
        }
コード例 #4
0
        public override OSDMap ToOSD()
        {
            OSDMap map = new OSDMap();

            map["Method"]      = "UpdateAgentDataRequest";
            map["Destination"] = Destination.ToOSD();
            map["Update"]      = Update.ToOSD();
            return(map);
        }
コード例 #5
0
        public override OSDMap ToOSD()
        {
            OSDMap map = new OSDMap();

            map["Method"]         = "RetrieveAgentRequest";
            map["AgentID"]        = AgentID;
            map["Destination"]    = Destination.ToOSD();
            map["AgentIsLeaving"] = AgentIsLeaving;
            return(map);
        }
コード例 #6
0
        public override OSDMap ToOSD()
        {
            OSDMap map = new OSDMap();

            map["Method"]        = "CreateAgentRequest";
            map["Destination"]   = Destination.ToOSD();
            map["TeleportFlags"] = TeleportFlags;
            map["CircuitData"]   = CircuitData.ToOSD();
            return(map);
        }
コード例 #7
0
        public override OSDMap ToOSD()
        {
            OSDMap map = new OSDMap();

            map["Method"]      = "MakeChildAgentRequest";
            map["AgentID"]     = AgentID;
            map["Destination"] = Destination.ToOSD();
            map["OldRegion"]   = OldRegion.ToOSD();
            map["IsCrossing"]  = IsCrossing;
            return(map);
        }
コード例 #8
0
        public override OSDMap ToOSD()
        {
            OSDMap map = new OSDMap();

            map["Method"]         = "FailedToTeleportAgentRequest";
            map["AgentID"]        = AgentID;
            map["Destination"]    = Destination.ToOSD();
            map["IsCrossing"]     = IsCrossing;
            map["Reason"]         = Reason;
            map["FailedRegionID"] = FailedRegionID;
            return(map);
        }
コード例 #9
0
        public OSDMap GetExternalCaps(UUID agentID, GridRegion region)
        {
            if (m_registry == null)
            {
                return(new OSDMap());
            }
            OSDMap resp = new OSDMap();

            if (m_registry.RequestModuleInterface <IGridServerInfoService>() != null)
            {
                m_servers = m_registry.RequestModuleInterface <IGridServerInfoService>().GetGridURIs("SyncMessageServerURI");
                OSDMap req = new OSDMap();
                req["AgentID"] = agentID;
                req["Region"]  = region.ToOSD();
                req["Method"]  = "GetCaps";

                List <ManualResetEvent> events = new List <ManualResetEvent>();
                foreach (string uri in m_servers.Where((u) => (!u.Contains(MainServer.Instance.Port.ToString()))))
                {
                    ManualResetEvent even = new ManualResetEvent(false);
                    m_syncPoster.Get(uri, req, (r) =>
                    {
                        if (r == null)
                        {
                            return;
                        }
                        foreach (KeyValuePair <string, OSD> kvp in r)
                        {
                            resp.Add(kvp.Key, kvp.Value);
                        }
                        even.Set();
                    });
                    events.Add(even);
                }
                if (events.Count > 0)
                {
                    ManualResetEvent.WaitAll(events.ToArray());
                }
            }
            foreach (var h in GetHandlers(agentID, region.RegionID))
            {
                if (m_allowedCapsModules.Contains(h.Name))
                {
                    h.IncomingCapsRequest(agentID, region, m_registry.RequestModuleInterface <ISimulationBase>(), ref resp);
                }
            }
            return(resp);
        }
コード例 #10
0
        public override OSDMap ToOSD()
        {
            OSDMap map = new OSDMap();

            map ["Error"]       = Error;
            map ["Neighbors"]   = new OSDArray(Neighbors.ConvertAll <OSD> ((region) => region.ToOSD()));
            map ["SessionID"]   = SessionID;
            map ["RegionFlags"] = RegionFlags;
            if (Region != null)
            {
                map ["Region"] = Region.ToOSD();
            }
            if (URIs != null)
            {
                map ["URIs"] = URIs.ToOSDMap();
            }
            return(map);
        }
コード例 #11
0
        public bool Store(GridRegion region)
        {
            if (region.EstateOwner == UUID.Zero)
            {
                IEstateConnector EstateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> ();
                EstateSettings   ES = null;
                if (EstateConnector != null)
                {
                    ES = EstateConnector.GetRegionEstateSettings(region.RegionID);
                    if ((ES != null) && (ES.EstateID != 0))
                    {
                        region.EstateOwner = ES.EstateOwner;
                    }
                }
                if (region.EstateOwner == UUID.Zero && ES != null && ES.EstateID != 0)
                {
                    MainConsole.Instance.Error(
                        "[LocalGridConnector] Attempt to store region with owner of UUID.Zero detected:" +
                        (new System.Diagnostics.StackTrace()).GetFrame(1));
                }
            }

            Dictionary <string, object> row = new Dictionary <string, object> (14);

            row ["ScopeID"]    = region.ScopeID;
            row ["RegionUUID"] = region.RegionID;
            row ["RegionName"] = region.RegionName;
            row ["LocX"]       = region.RegionLocX;
            row ["LocY"]       = region.RegionLocY;
            row ["LocZ"]       = region.RegionLocZ;
            row ["OwnerUUID"]  = region.EstateOwner;
            row ["Access"]     = region.Access;
            row ["SizeX"]      = region.RegionSizeX;
            row ["SizeY"]      = region.RegionSizeY;
            row ["SizeZ"]      = region.RegionSizeZ;
            row ["Flags"]      = region.Flags;
            row ["SessionID"]  = region.SessionID;
            row ["Info"]       = OSDParser.SerializeJsonString(region.ToOSD());

            return(m_GD.Replace(m_realm, row));
        }
コード例 #12
0
        public void RemoveExternalCaps(UUID agentID, GridRegion region)
        {
            OSDMap req = new OSDMap();

            req ["AgentID"] = agentID;
            req ["Region"]  = region.ToOSD();
            req ["Method"]  = "RemoveCaps";

            foreach (string uri in m_servers)
            {
                m_syncPoster.Post(uri, req);
            }

            foreach (var h in GetHandlers(agentID, region.RegionID))
            {
                if (m_allowedCapsModules.Contains(h.Name))
                {
                    h.IncomingCapsDestruction();
                }
            }
        }
コード例 #13
0
        public OSDMap GetExternalCaps (UUID agentID, GridRegion region)
        {
            if (m_registry == null)
                return new OSDMap ();
            OSDMap resp = new OSDMap ();
            if (m_registry.RequestModuleInterface<IGridServerInfoService> () != null)
            {
                m_servers = m_registry.RequestModuleInterface<IGridServerInfoService> ().GetGridURIs ("SyncMessageServerURI");
                OSDMap req = new OSDMap ();
                req ["AgentID"] = agentID;
                req ["Region"] = region.ToOSD ();
                req ["Method"] = "GetCaps";

                List<ManualResetEvent> events = new List<ManualResetEvent> ();
                foreach (string uri in m_servers.Where((u)=>(!u.Contains(MainServer.Instance.Port.ToString()))))
                {
                    ManualResetEvent even = new ManualResetEvent (false);
                    m_syncPoster.Get (uri, req, (r) => {
                        if (r == null)
                            return;
                        foreach (KeyValuePair<string, OSD> kvp in r)
                            resp.Add (kvp.Key, kvp.Value);
                        even.Set ();
                    });
                    events.Add (even);
                }
                if (events.Count > 0)
                    ManualResetEvent.WaitAll (events.ToArray ());
            }
            foreach (var h in GetHandlers(agentID, region.RegionID))
            {
                if (m_allowedCapsModules.Contains (h.Name))
                    h.IncomingCapsRequest (agentID, region, m_registry.RequestModuleInterface<ISimulationBase> (), ref resp);
            }
            return resp;
        }
コード例 #14
0
        public void RemoveExternalCaps (UUID agentID, GridRegion region)
        {
            OSDMap req = new OSDMap ();
            req ["AgentID"] = agentID;
            req ["Region"] = region.ToOSD ();
            req ["Method"] = "RemoveCaps";

            foreach (string uri in m_servers)
                m_syncPoster.Post (uri, req);

            foreach (var h in GetHandlers(agentID, region.RegionID))
            {
                if (m_allowedCapsModules.Contains (h.Name))
                    h.IncomingCapsDestruction ();
            }
        }