public AutosaveHUD(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { _autosaveFile = Path.Combine(Topology.GetFolder(Factory.Owner), AUTOSAVE_NAME); if (File.Exists(_autosaveFile)) Topology.LoadTopology(Factory.Owner, Factory.Host.Owner, _autosaveFile); }
public LinkStateNode(IMNodeInternal node, IKeyTableFactory tableFactory, IAsynchQueue dijkstraQ, IAsynchQueue packetQ, ForwardDelegate forwardMethod, IConfigSource config) : base(node, tableFactory, dijkstraQ, config) { _eventQ = packetQ; _forwardMethod = forwardMethod; _processedEvents = new HashSet <int>(); OnRouteChange += (alg, target, oldRoute, newRoute, oldDistance, distance) => { _changed = true; if (!Model.IsPaused) { return; } if (oldRoute != null && newRoute != null) { Say("Link State changed route to " + target.Name + " from " + oldRoute.OtherEnd(Node).Name + " to " + newRoute.OtherEnd(Node).Name + "."); } else if (oldRoute == null) { Say("Link State added route to " + target.Name + " via " + newRoute.OtherEnd(Node).Name + " with distance " + distance + "."); } else if (newRoute == null) { Say("Link State removed route to " + target.Name + ". " + oldRoute.OtherEnd(Node).Name + " is no longer a valid first hop and no other route was found."); } else { Say("Link State changed weight of route to " + target.Name + " from " + oldDistance + " to " + distance + "."); } }; }
public SandboxControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { _tableFactory = tableFactory; //IsOn int chatChannel = ControlConfig.GetInt("PublicInputChannel", 46); if (chatChannel < 0) { chatChannel = 46; } Dialog.SetChatChannel(chatChannel); //Misc _reposition = ControlConfig.GetBoolean("RepositionControls", false); float scale = ControlConfig.GetFloat("DefaultScale", .5f); if (ControlConfig.GetBoolean("AutoRecord", false)) { Record.StartRecording(); } InitControls(); }
public CreateTopologyControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { /* //Touch Button IButton floor = Factory.MakeButton("Floor", Permissions, HostPrim.ID); floor.OnTouched += (source, args) => AddRouter(args.AvatarName, args.AvatarID, args.TouchPosition); */ IConfig controlConfig = config.Configs["Control"]; string god = controlConfig.Get(GOD_KEY, GOD); string topologyDefault = controlConfig.Get(TOPOLOGY_KEY, GOD); _listener = (name, id, text, channel) => { string[] args = text.Split(' '); if (id.Equals(HostPrim.Owner) && args[0].ToUpper().Equals("SAVE")) { if (args.Length > 1) { HostPrim.Say("Saving topology as " + args[1]); Topology.SaveTopology(name, id, args[1]); } else { HostPrim.Say("Showing Dialog"); SaveDialog save = new SaveDialog(HostPrim, primFactory, "Topology", topologyDefault, user => Topology.GetUserFolder(god)); save.OnSave += (userName, userID, file) => Topology.SaveTopology(name, id, file); save.Show(name, id); } } }; primFactory.OnChat += _listener; }
public CreateTopologyControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { /* * //Touch Button * IButton floor = Factory.MakeButton("Floor", Permissions, HostPrim.ID); * floor.OnTouched += (source, args) => AddRouter(args.AvatarName, args.AvatarID, args.TouchPosition); */ IConfig controlConfig = config.Configs["Control"]; string god = controlConfig.Get(GOD_KEY, GOD); string topologyDefault = controlConfig.Get(TOPOLOGY_KEY, GOD); _listener = (name, id, text, channel) => { string[] args = text.Split(' '); if (id.Equals(HostPrim.Owner) && args[0].ToUpper().Equals("SAVE")) { if (args.Length > 1) { HostPrim.Say("Saving topology as " + args[1]); Topology.SaveTopology(name, id, args[1]); } else { HostPrim.Say("Showing Dialog"); SaveDialog save = new SaveDialog(HostPrim, primFactory, "Topology", topologyDefault, user => Topology.GetUserFolder(god)); save.OnSave += (userName, userID, file) => Topology.SaveTopology(name, id, file); save.Show(name, id); } } }; primFactory.OnChat += _listener; }
internal DVNode(IMNodeInternal node, ForwardDelegate forwardMethod, IAsynchQueue queue, IKeyTableFactory tableFactory, int TTL, IConfigSource config) : base(node, tableFactory, config) { _queue = queue; _forwardMethod = forwardMethod; this.TTL = TTL; distanceVector = new DistanceVector(); neighbourVectors = tableFactory.MakeKeyTable<DistanceVector>(); highlightParameters = new Parameters(new object[] { "HColour", node.Colour }); IConfig dvConfig = config.Configs["DV"]; if (dvConfig == null) dvConfig = config.Configs["DistanceVector"]; if (dvConfig == null) dvConfig = config.Configs["Algorithm"]; if (dvConfig == null) dvConfig = config.Configs[0]; _poison = dvConfig.GetBoolean("PoisonReverse", true); _everPrint = dvConfig.GetBoolean("EverPrint", false); _alwaysPrint = dvConfig.GetBoolean("AlwaysPrint", false); highlightPrintText = dvConfig.GetBoolean("HighlightPrint", false); }
public SandboxControlLink(ILink link, INode from, INode to, SandboxControl control, IKeyTableFactory tableFactory, IPrimFactory primFactory, IPermissions permissions) : base(link, from, to, control, permissions) { _control = control; _bufferedChanges = tableFactory.MakeKeyTable<double>(); _dialog = new Dialog(control.HostPrim, primFactory, LINK_BUTTONS); _dialog.ResponseReceived += DialogPressed; }
public View(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IConfigSource config) : base(tableFactory, queueFactory) { _factory = primFactory; _displayingBoards = tableFactory.MakeKeyTable <IEnumerable <UUID> >(); _moveQ = queueFactory.MakeQueue(); _deliverQ = queueFactory.MakeQueue(); //_moveQ = new SmartThreadPool(int.MaxValue, 30, 3); IConfig viewConfig = config.Configs["View"]; if (viewConfig == null) { viewConfig = config.Configs[0]; } _wait = viewConfig.GetInt("Wait", _wait); _waitMultiplier = viewConfig.GetFloat("WaitMultiplier", 5f); _displayChannel = viewConfig.GetInt("ListeningChannel", -43); _autoUpdate = viewConfig.GetBoolean("AutoUpdateTables", false); int tableResolution = viewConfig.GetInt("TableResolution", -1); if (tableResolution > 0) { VNode.SetTableResolution(tableResolution); } _moveQ.Start("View Move Queue" /*, viewConfig.GetInt("PacketsPerThread", PACKETS_PER_THREAD)*/); _deliverQ.Start("View Deliver Queue"); //_moveQ.Start(); VLink.MaxWidth = viewConfig.GetFloat("maxLinkWidth", VLink.MaxWidth); VLink.MinWidth = viewConfig.GetFloat("minLinkWidth", VLink.MinWidth); VPacket.MaxMovesPerUnit = viewConfig.GetInt("maxNumPacketMovesPerUnit", VPacket.MaxMovesPerUnit); VPacket.MinMovesPerUnit = viewConfig.GetInt("minNumPacketMovesPerUnit", VPacket.MinMovesPerUnit); VPacket.DefaultMovesPerUnit = viewConfig.GetInt("defaultNumPacketMovesPerUnit", VPacket.DefaultMovesPerUnit); _tickThread = new Thread(() => { _cont = true; int wait = (int)(Wait * _waitMultiplier); int tick = 0; while (_cont) { Util.Wait(wait, _cont && wait > 0, this); DateTime start = DateTime.Now; if (_cont && OnTick != null) { OnTick(); } wait = (int)((Wait * _waitMultiplier) - DateTime.Now.Subtract(start).TotalMilliseconds); tick++; } }); _tickThread.Name = "View Tick Thread"; _tickThread.Start(); Logger.Info("View started."); }
public AdvancedControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, UUID hostID, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, hostID, config) { IConfig controlConfig = config.Configs["Control"]; if (controlConfig == null) controlConfig = config.Configs[0]; _defaultTopologyName = controlConfig.Get("DefaultTopologyName", "Topology"); _defaultRecordingName = controlConfig.Get("DefaultSequenceName", "Sequence"); }
public SequenceControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { IConfig controlConfig = config.Configs[CONTROL_CONFIG]; if (controlConfig == null) controlConfig = config.Configs[0]; Init(controlConfig, HostPrim.Owner, this, Factory); }
public IndividualState(Module.Control control, IKeyTableFactory tableFactory) { _control = control; _state = new Dictionary<string, string>(); _selectedEntities = new Dictionary<string, IControlEntity>(); _toggles = tableFactory.MakeKeyTable<Dictionary<string, Toggle>>(); _stateButtons = tableFactory.MakeKeyTable<List<IButton>>(); }
public IndividualState(Module.Control control, IKeyTableFactory tableFactory) { _control = control; _state = new Dictionary <string, string>(); _selectedEntities = new Dictionary <string, IControlEntity>(); _toggles = tableFactory.MakeKeyTable <Dictionary <string, Toggle> >(); _stateButtons = tableFactory.MakeKeyTable <List <IButton> >(); }
public AutosaveHUD(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { _autosaveFile = Path.Combine(Topology.GetUserFolder(Factory.Owner), AUTOSAVE_NAME); if (File.Exists(_autosaveFile)) { Topology.LoadTopology(Factory.Owner, Factory.Host.Owner, _autosaveFile); } }
public LinkState(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IConfigSource config) { _tableFactory = tableFactory; _config = config; //_dijkstraQ = queueFactory.MakeQueue(); _dijkstraQ = queueFactory.SharedQueue; _eventQ = queueFactory.MakeQueue(); //_dijkstraQ.Start("Link State dijkstra queue"); _eventQ.Start("Link State packet queue"); _eventQ.UseStack = true; Model.OnWaitChanged += (oldWait, wait, paused) => _eventQ.Paused = paused; }
public AdvancedControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, UUID hostID, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, hostID, config) { IConfig controlConfig = config.Configs["Control"]; if (controlConfig == null) { controlConfig = config.Configs[0]; } _defaultTopologyName = controlConfig.Get("DefaultTopologyName", "Topology"); _defaultRecordingName = controlConfig.Get("DefaultSequenceName", "Sequence"); }
public CreateSequenceControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { IConfig controlConfig = config.Configs["Control"]; string god = controlConfig.Get(GOD_KEY, GOD); string topology = controlConfig.Get(TOPOLOGY_KEY, null); string sequenceDefault = controlConfig.Get(SEQUENCE_KEY, SEQUENCE); if (topology != null) { Topology.LoadTopology(god, Factory.Host.Owner, topology); } _listener = (name, id, text, channel) => { string[] args = text.Split(' '); if (id.Equals(HostPrim.Owner) && args[0].ToUpper().Equals("SAVE")) { if (args.Length > 1) { HostPrim.Say("Saving sequence as " + args[1]); if (topology != null) { Record.SaveRecording(god, args[1], topology); } else { Record.SaveRecording(god, args[1]); } } else { HostPrim.Say("Showing Dialog"); SaveDialog save = new SaveDialog(HostPrim, primFactory, "Sequence", sequenceDefault, user => Record.GetUserFolder(god)); save.OnSave += (user, userID, file) => { if (topology == null) { Record.SaveRecording(god, file); } else { Record.SaveRecording(god, file, topology); } }; save.Show(name, id); } } }; primFactory.OnChat += _listener; Record.StartRecording(); }
public SequenceControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { IConfig controlConfig = config.Configs[CONTROL_CONFIG]; if (controlConfig == null) { controlConfig = config.Configs[0]; } Init(controlConfig, HostPrim.Owner, this, Factory); }
protected AbstractAlgorithmNode(IMNodeInternal node, IKeyTableFactory tableFactory, IConfigSource config) { AlgCollectionExtension._tableFactory = tableFactory; Logger = LogManager.GetLogger(GetType()); _node = node; _table = tableFactory.MakeKeyTable <IMLink>(); _distances = tableFactory.MakeKeyTable <float>(); this.RegisterAlgNode(); Node.OnWeightChange += (link, weight) => WeightChanged(Links[link], IsCurrentAlgorithm && Links[link].Parameters.Get <bool>("Visualise")); Node.OnLinkAdded += (n, link, parameters) => LinkAdded(link, parameters, IsCurrentAlgorithm && parameters.Get <bool>("Visualise")); Node.OnLinkRemoved += (n, link, parameters) => LinkRemoved(link, parameters, IsCurrentAlgorithm && parameters.Get <bool>("Visualise")); }
public Control(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory) { ControlConfig = config.Configs[CONTROL_CONFIG]; IConfig commonConfig = config.Configs["Common"]; if (ControlConfig == null) { ControlConfig = config.Configs[0]; } if (commonConfig == null) { commonConfig = config.Configs[0]; } _toggleGlow = ControlConfig.GetDouble("ToggleGlow", .15); _fade = ControlConfig.GetDouble("Fade", .8); _defaultRecordingName = ControlConfig.Get("DefaultSequenceName", "Sequence"); _defaultTopologyName = ControlConfig.Get("DefaultTopologyName", "Topology"); _multiNumber = ControlConfig.GetInt("MultiSendNumber", 10); _multiSendDelay = ControlConfig.GetInt("MultiSendDelay", 750); _wait = commonConfig.GetInt("Wait", 50); _factory = primFactory; _record = MakeRecord(ControlConfig, tableFactory, queueFactory, primFactory); _topology = MakeTopology(ControlConfig); _permissions = MakePermissions(tableFactory, config); _state = MakeState(tableFactory, config); _model = Record.Make <IModel>(model, false); string tableName = ControlConfig.Get(TABLE_KEY, null); int tableCount = ControlConfig.GetInt(TABLE_COUNT, 1); _tables = new List <RoutingTable>(); if (tableName != null && tableCount > 1) { for (int i = 1; i <= tableCount; i++) { _tables.Add(new RoutingTable(Factory.MakeButton(tableName + i, Permissions), this, Factory)); } } else if (tableName != null) { _tables.Add(new RoutingTable(Factory.MakeButton(tableName, Permissions), this, Factory)); } _tables.Add(new RoutingTable(Factory.MakeButton(ControlConfig.Get(TABLE_HUD_KEY, "TableDisplayHUD"), Permissions), this, Factory)); Logger.Info("Control started."); }
public DijkstraNode(IMNodeInternal node, IKeyTableFactory tableFactory, IAsynchQueue queue, IConfigSource config) : base(node, tableFactory, config) { _queue = queue; _distances = tableFactory.MakeKeyTable <float>(); _wipRoute = tableFactory.MakeKeyTable <IMLink>(); _prev = tableFactory.MakeKeyTable <DijkstraNode>(); _confirmed = new LinkedList <DijkstraNode>(); _tentative = new LinkedList <DijkstraNode>(); _links = new LinkedList <IMLink>(); SetDistanceFromRoot(ID, 0f, null, null); }
public MNode(INode node, ForwardDelegate forwardMethod, String defaultAlgorithm, IAlgorithm[] algorithms, IKeyTableFactory tableFactory) : base(node) { _passDownMethod = forwardMethod; _tableFactory = tableFactory; _links = tableFactory.MakeKeyTable <IMLink>(); _neighbours = tableFactory.MakeKeyTable <IMNodeInternal>(); _algorithms = new Dictionary <string, IAlgorithmNode>(); foreach (IAlgorithm alg in algorithms) { IAlgorithmNode algNode = alg.MakeNode(this, SendPacket); _algorithms.Add(alg.Name, algNode); algNode.OnRouteChange += RouteChangeListener; algNode.IsCurrentAlgorithm = alg.Name.Equals(defaultAlgorithm); if (algNode.IsCurrentAlgorithm) { _currentAlgorithm = algNode; } } if (_currentAlgorithm == null) { throw new Exception("Test Node unable to set algorithm. '" + defaultAlgorithm + "' is not a valid algorithm."); } _currentAlgorithmName = defaultAlgorithm; _passDownMethod = forwardMethod; OnPacketReceived += (at, p) => { IMPacket packet = p as IMPacket; if (packet != null && packet.Type == PTypes.data) { ReceiveData(packet); } else if (packet != null && _algorithms.ContainsKey(packet.Algorithm)) { _algorithms[packet.Algorithm].ProcessPacket(packet); } }; _weightDelegate = (id, newWeight) => { if (OnWeightChange != null) { OnWeightChange(id, newWeight); Logger.Debug(Name + " triggered OnWeightChange for '" + Links[id].Name + "'."); } }; _highlightDelegate = () => ResetHighlightAll(); OnHighlightReset += _highlightDelegate; }
protected AbstractModule(IKeyTableFactory keyTableFactory, IAsynchQueueFactory queueFactory) { TableFactory = keyTableFactory; Logger = LogManager.GetLogger(GetType()); _nodes = keyTableFactory.MakeKeyTable <TNode>(); _links = keyTableFactory.MakeKeyTable <TLink>(); _neighbours = keyTableFactory.MakeKeyTable <IKeyTable <TNode> >(); _connections = keyTableFactory.MakeKeyTable <IKeyTable <TLink> >(); //_queue = queueFactory.MakeQueue(); //Queue.Start(GetType().Name + " module queue"); _queue = queueFactory.SharedQueue; }
public OriginalControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, UUID hostID, IConfigSource config) : base(tableFactory, queueFactory) { _hostPrim = primFactory[hostID]; _readerMap = new Dictionary <string, UUID>(); _writerMap = tableFactory.MakeKeyTable <string>(); _paused = tableFactory.MakeKeyTable <bool>(); IConfig controlConfig = config.Configs["Control"]; IConfig commonConfig = config.Configs["Common"]; if (controlConfig == null) { controlConfig = config.Configs[0]; } if (commonConfig == null) { commonConfig = config.Configs[0]; } _wait = commonConfig.GetInt("Wait", 50); _userFolder = controlConfig.Get("UserFolder", "."); _recordingEnabled = controlConfig.GetBoolean("RecordingEnabled", false); _timing = controlConfig.GetBoolean("TimedPlayback", true); _schemaFile = controlConfig.GetString("TopologySchema", null); _reader = new OpenSimLogReader(_readerMap, model, HostPrim.Pos); _reader.MapInstance <IModule>(this); _writers = tableFactory.MakeKeyTable <IXmlLogWriter>(); _factory = primFactory; if (_recordingEnabled) { _modelWriter = new OpenSimLogWriter <IModel>(_writerMap, model, HostPrim.Pos, true, false); _model = _modelWriter.Instance; IXmlLogWriter <IModule> baseWriter = new OpenSimLogWriter <IModule>(_writerMap, this, HostPrim.Pos, true); _recordingBase = baseWriter.Instance; _writers.Add(hostID, baseWriter); } else { _model = model; } Namespace = controlConfig.Get("Namespace", Namespace); Logger.Info("Control started."); }
public DV(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IConfigSource configSource) { _queue = queueFactory.MakeQueue(); _tableFactory = tableFactory; _config = configSource; IConfig config = configSource.Configs["Algorithms"]; if (config == null) config = configSource.Configs["DV"]; if (config == null) config = configSource.Configs[0]; _queue.Start("Distance Vector work Queue"); _queue.UseStack = true; TTL = config.GetInt("TTL", 200); Model.OnWaitChanged += (oldWait, wait, paused) => _queue.Paused = paused; }
public Dijkstra(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IConfigSource config) { _tableFactory = tableFactory; //_queue = queueFactory.MakeQueue(); //_queue.Start("Dijkstra Queue"); _queue = queueFactory.SharedQueue; _config = config; Model.OnWaitChanged += (oldWait, newWait, paused) => { if (DijkstraNode.VisualisedNode != null && oldWait == newWait && !paused) Util.Wake(DijkstraNode.VisualisedNode); }; IConfig dijkstraConfig = config.Configs["Dijkstra"]; AlwaysPrint = dijkstraConfig != null && dijkstraConfig.GetBoolean("AlwaysPrint", false); EverPrint = dijkstraConfig != null && dijkstraConfig.GetBoolean("EverPrint", false); }
public Model(IView view, IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IConfigSource config, params IAlgorithm[] algorithms) : base(tableFactory, queueFactory) { if (algorithms.Length == 0) { view.Stop(); throw new Exception("Unable to start model layer, default algorithm " + _currentAlgorithm + " is not a valid algorithm"); } _knownNodes = tableFactory.MakeKeyTable <IMNodeInternal>(); _view = view; _algorithms = algorithms; IConfig commonConfig = config.Configs["Common"]; IConfig modelConfig = config.Configs["Model"]; if (modelConfig == null) { modelConfig = config.Configs[0]; } if (commonConfig == null) { commonConfig = config.Configs[0]; } _wait = commonConfig.GetInt("Wait", 50); _waitMult = modelConfig.GetInt("WaitMult", 5); _currentAlgorithm = modelConfig.GetString("Algorithm", algorithms.First().Name); if (_algorithms.Count(alg => alg.Name.Equals(_currentAlgorithm)) == 0) { _currentAlgorithm = algorithms.First().Name; Logger.Debug("Specified Current Algorithm ('" + modelConfig.GetString("Algorithm") + "') invalid. Using '" + _currentAlgorithm + "'."); } if (!modelConfig.Contains("Algorithm")) { Logger.Debug("Current Algorithm not specified. Using '" + _currentAlgorithm + "'."); } Logger.Info("Model started with " + algorithms.Length + " algorithms."); foreach (IAlgorithm alg in algorithms) { Logger.Info(alg.Name + (alg.Name.Equals(_currentAlgorithm) ? " (default)" :"")); } }
public TopologyControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { IConfig control = config.Configs[CONTROL_CONFIG]; if (control == null) { control = config.Configs[0]; } _reposition = !control.GetBoolean("RotateWithHost", true) && control.GetBoolean("Reposition", true); _hostPos = HostPrim.Pos; _hostRot = HostPrim.Rotation; string topology = control.GetString(TOPOLOGY_KEY); string godName = control.GetString(GOD_KEY, GOD); if (topology == null) { HostPrim.Say("Unable to start topology control. No topology file specified."); throw new Exception("Unable to start topology control. No topology file specified."); } Topology.LoadTopology(godName, HostPrim.Owner, topology); HostPrim.Say("Started Topology Control."); Factory.AddLinkSetRoot(Factory.Host.ID); IButton PauseButton = MakeButton("Pause"); IButton StepButton = MakeButton("Step"); IToggle PauseToggle = new Toggle(PauseButton, 1, ToggleGlow); foreach (var pause in PauseToggle.Prims) { pause.Colour = Color.White; } PauseToggle.OnToggled += (source, args) => { Record.Paused = PauseToggle.IsOn; foreach (var prim in PauseToggle.Prims) { prim.Glow = PauseToggle.IsOn ? .1d : 0d; prim.Colour = Color.White; } }; StepButton.OnTouched += (source, args) => Model.Step(); }
public Dijkstra(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IConfigSource config) { _tableFactory = tableFactory; //_queue = queueFactory.MakeQueue(); //_queue.Start("Dijkstra Queue"); _queue = queueFactory.SharedQueue; _config = config; Model.OnWaitChanged += (oldWait, newWait, paused) => { if (DijkstraNode.VisualisedNode != null && oldWait == newWait && !paused) { Util.Wake(DijkstraNode.VisualisedNode); } }; IConfig dijkstraConfig = config.Configs["Dijkstra"]; AlwaysPrint = dijkstraConfig != null && dijkstraConfig.GetBoolean("AlwaysPrint", false); EverPrint = dijkstraConfig != null && dijkstraConfig.GetBoolean("EverPrint", false); }
public DV(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IConfigSource configSource) { _queue = queueFactory.MakeQueue(); _tableFactory = tableFactory; _config = configSource; IConfig config = configSource.Configs["Algorithms"]; if (config == null) { config = configSource.Configs["DV"]; } if (config == null) { config = configSource.Configs[0]; } _queue.Start("Distance Vector work Queue"); _queue.UseStack = true; TTL = config.GetInt("TTL", 200); Model.OnWaitChanged += (oldWait, wait, paused) => _queue.Paused = paused; }
public CreateSequenceControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { IConfig controlConfig = config.Configs["Control"]; string god = controlConfig.Get(GOD_KEY, GOD); string topology = controlConfig.Get(TOPOLOGY_KEY, null); string sequenceDefault = controlConfig.Get(SEQUENCE_KEY, SEQUENCE); if (topology != null) Topology.LoadTopology(god, Factory.Host.Owner, topology); _listener = (name, id, text, channel) => { string[] args = text.Split(' '); if (id.Equals(HostPrim.Owner) && args[0].ToUpper().Equals("SAVE")) { if (args.Length > 1) { HostPrim.Say("Saving sequence as " + args[1]); if (topology != null) Record.SaveRecording(god, args[1], topology); else Record.SaveRecording(god, args[1]); } else { HostPrim.Say("Showing Dialog"); SaveDialog save = new SaveDialog(HostPrim, primFactory, "Sequence", sequenceDefault, user => Record.GetUserFolder(god)); save.OnSave += (user, userID, file) => { if (topology == null) Record.SaveRecording(god, file); else Record.SaveRecording(god, file, topology); }; save.Show(name, id); } } }; primFactory.OnChat += _listener; Record.StartRecording(); }
public TopologyControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { IConfig control = config.Configs[CONTROL_CONFIG]; if (control == null) control = config.Configs[0]; _reposition = !control.GetBoolean("RotateWithHost", true) && control.GetBoolean("Reposition", true); _hostPos = HostPrim.Pos; _hostRot = HostPrim.Rotation; string topology = control.GetString(TOPOLOGY_KEY); string godName = control.GetString(GOD_KEY, GOD); if (topology == null) { HostPrim.Say("Unable to start topology control. No topology file specified."); throw new Exception("Unable to start topology control. No topology file specified."); } Topology.LoadTopology(godName, HostPrim.Owner, topology); HostPrim.Say("Started Topology Control."); Factory.AddLinkSetRoot(Factory.Host.ID); IButton PauseButton = MakeButton("Pause"); IButton StepButton = MakeButton("Step"); IToggle PauseToggle = new Toggle(PauseButton, 1, ToggleGlow); foreach (var pause in PauseToggle.Prims) pause.Colour = Color.White; PauseToggle.OnToggled += (source, args) => { Record.Paused = PauseToggle.IsOn; foreach (var prim in PauseToggle.Prims) { prim.Glow = PauseToggle.IsOn ? .1d : 0d; prim.Colour = Color.White; } }; StepButton.OnTouched += (source, args) => Model.Step(); }
protected virtual ISequenceManager MakeRecord(IConfig config, IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory) { return(new SequenceManager(this, this, config, primFactory, tableFactory, Queue)); }
protected virtual IState MakeState(IKeyTableFactory tableFactory, IConfigSource config) { return(new SharedState(this)); }
protected virtual IPermissions MakePermissions(IKeyTableFactory tableFactory, IConfigSource config) { return(new FreePermissions()); }
public SandboxControlLink(ILink link, INode from, INode to, SandboxControl control, IKeyTableFactory tableFactory, IPrimFactory primFactory, IPermissions permissions) : base(link, from, to, control, permissions) { _control = control; _bufferedChanges = tableFactory.MakeKeyTable <double>(); _dialog = new Dialog(control.HostPrim, primFactory, LINK_BUTTONS); _dialog.ResponseReceived += DialogPressed; }
public MNode(INode node, ForwardDelegate forwardMethod, String defaultAlgorithm, IAlgorithm[]algorithms, IKeyTableFactory tableFactory) : base(node) { _passDownMethod = forwardMethod; _tableFactory = tableFactory; _links = tableFactory.MakeKeyTable<IMLink>(); _neighbours = tableFactory.MakeKeyTable<IMNodeInternal>(); _algorithms = new Dictionary<string, IAlgorithmNode>(); foreach (IAlgorithm alg in algorithms) { IAlgorithmNode algNode = alg.MakeNode(this, SendPacket); _algorithms.Add(alg.Name, algNode); algNode.OnRouteChange += RouteChangeListener; algNode.IsCurrentAlgorithm = alg.Name.Equals(defaultAlgorithm); if (algNode.IsCurrentAlgorithm) _currentAlgorithm = algNode; } if (_currentAlgorithm == null) throw new Exception("Test Node unable to set algorithm. '" + defaultAlgorithm + "' is not a valid algorithm."); _currentAlgorithmName = defaultAlgorithm; _passDownMethod = forwardMethod; OnPacketReceived += (at, p) => { IMPacket packet = p as IMPacket; if (packet != null && packet.Type == PTypes.data) ReceiveData(packet); else if (packet != null && _algorithms.ContainsKey(packet.Algorithm)) _algorithms[packet.Algorithm].ProcessPacket(packet); }; _weightDelegate = (id, newWeight) => { if (OnWeightChange != null) { OnWeightChange(id, newWeight); Logger.Debug(Name + " triggered OnWeightChange for '" + Links[id].Name + "'."); } }; _highlightDelegate = () => ResetHighlightAll(); OnHighlightReset += _highlightDelegate; }
protected override IPermissions MakePermissions(IKeyTableFactory tableFactory, IConfigSource config) { return new LockedPermissions(Factory, config, HostPrim, this); }
public DijkstraNode(IMNodeInternal node, IKeyTableFactory tableFactory, IAsynchQueue queue, IConfigSource config) : base(node, tableFactory, config) { _queue = queue; _distances = tableFactory.MakeKeyTable<float>(); _wipRoute = tableFactory.MakeKeyTable<IMLink>(); _prev = tableFactory.MakeKeyTable<DijkstraNode>(); _confirmed = new LinkedList<DijkstraNode>(); _tentative = new LinkedList<DijkstraNode>(); _links = new LinkedList<IMLink>(); SetDistanceFromRoot(ID, 0f, null, null); }
public SequenceManager(IModule control, IControlUtil controlUtil, IConfig controlConfig, IPrimFactory primFactory, IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory) : this(control, controlUtil, controlConfig, primFactory, tableFactory, queueFactory.MakeQueue()) { }
public SequenceManager(IModule control, IControlUtil controlUtil, IConfig controlConfig, IPrimFactory factory, IKeyTableFactory tableFactory, IAsynchQueue queue) : base(controlConfig) { _queue = queue; _controlUtil = controlUtil; _hostPrim = controlUtil.HostPrim; _readerMap = new Dictionary <string, UUID>(); _writerMap = tableFactory.MakeKeyTable <string>(); _recordingEnabled = controlConfig.GetBoolean("RecordingEnabled", false); _sequenceFolder = controlConfig.Get(FOLDER_KEY, "."); _timing = controlConfig.GetBoolean("TimedPlayback", true); _reader = new OpenSimLogReader(_readerMap, control, _hostPrim.Pos); _reader.MapInstance <IModule>(control); _writers = tableFactory.MakeKeyTable <IXmlLogWriter>(); _control = Make <IModule>(new RecordControl(control), true); }
public HudControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, UUID hostID, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, hostID, config) { }
internal DVNode(IMNodeInternal node, ForwardDelegate forwardMethod, IAsynchQueue queue, IKeyTableFactory tableFactory, int TTL, IConfigSource config) : base(node, tableFactory, config) { _queue = queue; _forwardMethod = forwardMethod; this.TTL = TTL; distanceVector = new DistanceVector(); neighbourVectors = tableFactory.MakeKeyTable <DistanceVector>(); highlightParameters = new Parameters(new object[] { "HColour", node.Colour }); IConfig dvConfig = config.Configs["DV"]; if (dvConfig == null) { dvConfig = config.Configs["DistanceVector"]; } if (dvConfig == null) { dvConfig = config.Configs["Algorithm"]; } if (dvConfig == null) { dvConfig = config.Configs[0]; } _poison = dvConfig.GetBoolean("PoisonReverse", true); _everPrint = dvConfig.GetBoolean("EverPrint", false); _alwaysPrint = dvConfig.GetBoolean("AlwaysPrint", false); highlightPrintText = dvConfig.GetBoolean("HighlightPrint", false); }
public IndividualControl(IHost host, IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, UUID hostID, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, hostID, config) { _owner = host.Object.OwnerId; }
protected override IState MakeState(IKeyTableFactory tableFactory, IConfigSource config) { return new CreateTopologyState(this); }
public SandboxControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { _tableFactory = tableFactory; //IsOn int chatChannel = ControlConfig.GetInt("PublicInputChannel", 46); if (chatChannel < 0) chatChannel = 46; Dialog.SetChatChannel(chatChannel); //Misc _reposition = ControlConfig.GetBoolean("RepositionControls", false); float scale = ControlConfig.GetFloat("DefaultScale", .5f); if (ControlConfig.GetBoolean("AutoRecord", false)) Record.StartRecording(); InitControls(); }
public LockedWallSandbox(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { _lockWait = config.Configs[CONTROL_CONFIG] != null ? config.Configs[CONTROL_CONFIG].GetInt("ControlsLockTimeout", 300000) : 300000; }
protected override MRM.Controls.IPermissions MakePermissions(IKeyTableFactory tableFactory, IConfigSource config) { return new GodPermissions(HostPrim.Owner); }
protected override IState MakeState(IKeyTableFactory tableFactory, IConfigSource config) { return new SharedState(this); }
public MRMPrimFactory(IHost host, IWorld world, IAsynchQueueFactory queueFactory, IKeyTableFactory tableFactory, IConfigSource config, UUID hostID) { IConfig mrmConfig = config.Configs["MRM"]; if (mrmConfig == null) { mrmConfig = config.Configs[0]; } _world = world; _host = host; _logger = LogManager.GetLogger(typeof(MRMPrimFactory)); _prims = new MapKeyTable <IPrim>(); _createdPrims = new List <UUID>(); _freeObjects = new Dictionary <UUID, IObject>(); _chatListeners = new Dictionary <int, List <ChatDelegate> >(); //_factoryQ = queueFactory.MakeQueue(); _factoryQ = queueFactory.SharedQueue; CheckWait = mrmConfig.GetInt("CheckWait", CheckWait); _recycle = mrmConfig.GetBoolean("Recycle", true); try { _hostPrim = new MRMPrim(hostID, this); } catch (Exception e) { _hostPrim = null; throw new Exception("Problem getting Host Prim: " + e.Message + "\n" + e.StackTrace); } _chatListener += (sender, args) => { _world = sender; if (_chatListeners.ContainsKey(args.Channel)) { lock (_chatListeners) foreach (var listener in _chatListeners[args.Channel]) { listener(args.Sender.Name, args.Sender.GlobalID, args.Text, args.Channel); } } if (OnChat != null) { OnChat(args.Sender.Name, args.Sender.GlobalID, args.Text, args.Channel); } }; _world.OnChat += _chatListener; _checkThread = new Thread(CheckThread); _checkThread.Name = "MRMPrimFactory Check Thread"; _checkThread.Start(); _linkButtons = new Dictionary <uint, TouchButton>(); _chatButtons = new Dictionary <UUID, TouchButton>(); _knowButtons = new Dictionary <string, HashSet <UUID> >(); _pingChannel = mrmConfig.GetInt("PingChannel", -50); _ping = mrmConfig.Get("ButtonPing", "Ping"); _pingAck = mrmConfig.Get("ButtonPingAck", "Pong"); _chanAck = mrmConfig.Get("ButtonChannelAck", "ACK"); InitTouchButtons(); }
protected override IState MakeState(IKeyTableFactory tableFactory, IConfigSource config) { return(new CreateTopologyState(this)); }
public FullHudControl(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config) : base(tableFactory, queueFactory, primFactory, model, config) { }