public void Start(IScene scene) { m_scene = scene; m_scheduler = scene.Simian.GetAppModule <IScheduler>(); if (m_scheduler == null) { m_log.Warn("EventQueueManager requires an IScheduler"); return; } m_httpServer = m_scene.Simian.GetAppModule <IHttpServer>(); if (m_httpServer == null) { m_log.Warn("Upload requires an IHttpServer"); return; } m_scene.Capabilities.AddProtectedResource(m_scene.ID, "EventQueueGet", EventQueueHandler); m_udp = m_scene.GetSceneModule <LLUDP>(); if (m_udp != null) { m_running = true; m_scheduler.StartThread(EventQueueManagerThread, "EventQueue Manager (" + scene.Name + ")", ThreadPriority.Normal, false); } }
public void Start(IScene scene) { m_scene = scene; m_httpServer = m_scene.Simian.GetAppModule<IHttpServer>(); if (m_httpServer == null) { m_log.Warn("RezAvatar requires an IHttpServer"); return; } m_userClient = m_scene.Simian.GetAppModule<IUserClient>(); if (m_userClient == null) { m_log.Warn("RezAvatar requires an IUserClient"); return; } m_lludp = scene.GetSceneModule<LLUDP>(); if (m_lludp == null) { m_log.Error("Can't create the RegionDomain service without an LLUDP server"); return; } string urlFriendlySceneName = WebUtil.UrlEncode(m_scene.Name); string regionPath = "/regions/" + urlFriendlySceneName; m_httpServer.AddHandler("POST", null, regionPath + "/rez_avatar/request", true, true, RezAvatarRequestHandler); m_scene.AddPublicCapability("rez_avatar/request", m_httpServer.HttpAddress.Combine(regionPath + "/rez_avatar/request")); }
public LLUDPServer(LLUDP udp, IScene scene, IPAddress bindAddress, int port, IConfigSource configSource, IScheduler scheduler) : base(bindAddress, port) { m_udp = udp; Scene = scene; Scheduler = scheduler; IConfig throttleConfig = configSource.Configs["LLUDP"]; m_throttleRates = new ThrottleRates(LLUDPServer.MTU, throttleConfig); m_resendTimer = new TimedEvent(100); m_ackTimer = new TimedEvent(500); m_pingTimer = new TimedEvent(5000); m_httpServer = Scene.Simian.GetAppModule <IHttpServer>(); IConfig config = configSource.Configs["LLUDP"]; if (config != null) { m_asyncPacketHandling = config.GetBoolean("AsyncPacketHandling", true); m_recvBufferSize = config.GetInt("SocketReceiveBufferSize", 0); } m_throttle = new TokenBucket(null, m_throttleRates.SceneTotalLimit, m_throttleRates.SceneTotal); PacketEvents = new PacketEventDictionary(Scheduler); Scene.OnPresenceRemove += PresenceRemoveHandler; }
public void Start(IScene scene) { m_scene = scene; m_scheduler = m_scene.Simian.GetAppModule <IScheduler>(); if (m_scheduler == null) { m_log.Error("OARLoader requires an IScheduler"); return; } m_assetClient = m_scene.Simian.GetAppModule <IAssetClient>(); if (m_assetClient == null) { m_log.Error("OARLoader requires an IAssetClient"); return; } m_primMesher = m_scene.GetSceneModule <IPrimMesher>(); m_terrain = m_scene.GetSceneModule <ITerrain>(); m_regionInfo = m_scene.GetSceneModule <RegionInfo>(); m_udp = m_scene.GetSceneModule <LLUDP>(); m_permissions = m_scene.GetSceneModule <LLPermissions>(); m_scene.AddCommandHandler("loadoar", LoadOARHandler); }
public void Start(IScene scene) { m_scene = scene; m_httpServer = m_scene.Simian.GetAppModule <IHttpServer>(); if (m_httpServer == null) { m_log.Warn("RezAvatar requires an IHttpServer"); return; } m_userClient = m_scene.Simian.GetAppModule <IUserClient>(); if (m_userClient == null) { m_log.Warn("RezAvatar requires an IUserClient"); return; } m_lludp = scene.GetSceneModule <LLUDP>(); if (m_lludp == null) { m_log.Error("Can't create the RegionDomain service without an LLUDP server"); return; } string urlFriendlySceneName = WebUtil.UrlEncode(m_scene.Name); string regionPath = "/regions/" + urlFriendlySceneName; m_httpServer.AddHandler("POST", null, regionPath + "/rez_avatar/request", true, true, RezAvatarRequestHandler); m_scene.AddPublicCapability("rez_avatar/request", m_httpServer.HttpAddress.Combine(regionPath + "/rez_avatar/request")); }
public void Start(IScene scene) { m_scene = scene; m_lastCameraPositions = new Dictionary <uint, Vector3>(); m_borderCrossThrottles = new Dictionary <UUID, int>(); // Create an AABB for this scene that extends beyond the borders by BORDER_CROSS_THRESHOLD // that is used to check for border crossings m_borderCrossAABB = new AABB(Vector3.Zero, new Vector3(scene.MaxPosition - scene.MinPosition)); m_borderCrossAABB.Min -= new Vector3(BORDER_CROSS_THRESHOLD, BORDER_CROSS_THRESHOLD, BORDER_CROSS_THRESHOLD); m_borderCrossAABB.Max += new Vector3(BORDER_CROSS_THRESHOLD, BORDER_CROSS_THRESHOLD, BORDER_CROSS_THRESHOLD); m_scheduler = m_scene.Simian.GetAppModule <IScheduler>(); if (m_scheduler == null) { m_log.Warn("Neighbors requires an IScheduler"); return; } m_httpServer = m_scene.Simian.GetAppModule <IHttpServer>(); if (m_httpServer == null) { m_log.Warn("Neighbors requires an IHttpServer"); return; } m_udp = m_scene.GetSceneModule <LLUDP>(); if (m_udp == null) { m_log.Warn("Neighbors requires an LLUDP"); return; } m_userClient = m_scene.Simian.GetAppModule <IUserClient>(); if (m_userClient == null) { m_log.Warn("Neighbors requires an IUserClient"); return; } m_gridClient = scene.Simian.GetAppModule <IGridClient>(); // Add neighbor messaging handlers string urlFriendlySceneName = WebUtil.UrlEncode(scene.Name); string regionPath = "/regions/" + urlFriendlySceneName; m_httpServer.AddHandler("POST", null, regionPath + "/region/online", true, true, RegionOnlineHandler); m_httpServer.AddHandler("POST", null, regionPath + "/region/offline", true, true, RegionOfflineHandler); m_httpServer.AddHandler("POST", null, regionPath + "/child_avatar/update", true, true, ChildAvatarUpdateHandler); m_scene.AddPublicCapability("region/online", m_httpServer.HttpAddress.Combine(regionPath + "/region/online")); m_scene.AddPublicCapability("region/offline", m_httpServer.HttpAddress.Combine(regionPath + "/region/offline")); m_scene.AddPublicCapability("child_avatar/update", m_httpServer.HttpAddress.Combine(regionPath + "/child_avatar/update")); // Track local scenes going up and down m_sceneFactory = scene.Simian.GetAppModule <ISceneFactory>(); if (m_sceneFactory != null) { m_sceneFactory.OnSceneStart += SceneStartHandler; m_sceneFactory.OnSceneStop += SceneStopHandler; } m_scene.OnPresenceAdd += PresenceAddHandler; m_scene.OnEntityAddOrUpdate += EntityAddOrUpdateHandler; m_childUpdates = new ThrottledQueue <uint, IScenePresence>(5.0f, 200, true, SendChildUpdate); m_childUpdates.Start(); }
public void Start(IScene scene) { m_scene = scene; m_lastCameraPositions = new Dictionary<uint, Vector3>(); m_borderCrossThrottles = new Dictionary<UUID, int>(); // Create an AABB for this scene that extends beyond the borders by BORDER_CROSS_THRESHOLD // that is used to check for border crossings m_borderCrossAABB = new AABB(Vector3.Zero, new Vector3(scene.MaxPosition - scene.MinPosition)); m_borderCrossAABB.Min -= new Vector3(BORDER_CROSS_THRESHOLD, BORDER_CROSS_THRESHOLD, BORDER_CROSS_THRESHOLD); m_borderCrossAABB.Max += new Vector3(BORDER_CROSS_THRESHOLD, BORDER_CROSS_THRESHOLD, BORDER_CROSS_THRESHOLD); m_scheduler = m_scene.Simian.GetAppModule<IScheduler>(); if (m_scheduler == null) { m_log.Warn("Neighbors requires an IScheduler"); return; } m_httpServer = m_scene.Simian.GetAppModule<IHttpServer>(); if (m_httpServer == null) { m_log.Warn("Neighbors requires an IHttpServer"); return; } m_udp = m_scene.GetSceneModule<LLUDP>(); if (m_udp == null) { m_log.Warn("Neighbors requires an LLUDP"); return; } m_userClient = m_scene.Simian.GetAppModule<IUserClient>(); if (m_userClient == null) { m_log.Warn("Neighbors requires an IUserClient"); return; } m_gridClient = scene.Simian.GetAppModule<IGridClient>(); // Add neighbor messaging handlers string urlFriendlySceneName = WebUtil.UrlEncode(scene.Name); string regionPath = "/regions/" + urlFriendlySceneName; m_httpServer.AddHandler("POST", null, regionPath + "/region/online", true, true, RegionOnlineHandler); m_httpServer.AddHandler("POST", null, regionPath + "/region/offline", true, true, RegionOfflineHandler); m_httpServer.AddHandler("POST", null, regionPath + "/child_avatar/update", true, true, ChildAvatarUpdateHandler); m_scene.AddPublicCapability("region/online", m_httpServer.HttpAddress.Combine(regionPath + "/region/online")); m_scene.AddPublicCapability("region/offline", m_httpServer.HttpAddress.Combine(regionPath + "/region/offline")); m_scene.AddPublicCapability("child_avatar/update", m_httpServer.HttpAddress.Combine(regionPath + "/child_avatar/update")); // Track local scenes going up and down m_sceneFactory = scene.Simian.GetAppModule<ISceneFactory>(); if (m_sceneFactory != null) { m_sceneFactory.OnSceneStart += SceneStartHandler; m_sceneFactory.OnSceneStop += SceneStopHandler; } m_scene.OnPresenceAdd += PresenceAddHandler; m_scene.OnEntityAddOrUpdate += EntityAddOrUpdateHandler; m_childUpdates = new ThrottledQueue<uint, IScenePresence>(5.0f, 200, true, SendChildUpdate); m_childUpdates.Start(); }
public LLUDPServer(LLUDP udp, IScene scene, IPAddress bindAddress, int port, IConfigSource configSource, IScheduler scheduler) : base(bindAddress, port) { m_udp = udp; Scene = scene; Scheduler = scheduler; IConfig throttleConfig = configSource.Configs["LLUDP"]; m_throttleRates = new ThrottleRates(LLUDPServer.MTU, throttleConfig); m_resendTimer = new TimedEvent(100); m_ackTimer = new TimedEvent(500); m_pingTimer = new TimedEvent(5000); m_httpServer = Scene.Simian.GetAppModule<IHttpServer>(); IConfig config = configSource.Configs["LLUDP"]; if (config != null) { m_asyncPacketHandling = config.GetBoolean("AsyncPacketHandling", true); m_recvBufferSize = config.GetInt("SocketReceiveBufferSize", 0); } m_throttle = new TokenBucket(null, m_throttleRates.SceneTotalLimit, m_throttleRates.SceneTotal); PacketEvents = new PacketEventDictionary(Scheduler); Scene.OnPresenceRemove += PresenceRemoveHandler; }
public void Start(IScene scene) { m_scene = scene; m_scheduler = scene.Simian.GetAppModule<IScheduler>(); if (m_scheduler == null) { m_log.Warn("EventQueueManager requires an IScheduler"); return; } m_httpServer = m_scene.Simian.GetAppModule<IHttpServer>(); if (m_httpServer == null) { m_log.Warn("Upload requires an IHttpServer"); return; } m_scene.Capabilities.AddProtectedResource(m_scene.ID, "EventQueueGet", EventQueueHandler); m_udp = m_scene.GetSceneModule<LLUDP>(); if (m_udp != null) { m_running = true; m_scheduler.StartThread(EventQueueManagerThread, "EventQueue Manager (" + scene.Name + ")", ThreadPriority.Normal, false); } }