Beispiel #1
0
        public async Task <DeviceSource> ConnectAsync(string port, UInt16 universe)
        {
            try
            {
                var writer = await WriterFactory.CreateDmxWriterAsync(port);

                if (!Writers.Values.Any(x => x.UniverseID == universe))
                {
                    // start listening on a new universe
                    SacnReceiver.JoinMulticastGroup(universe);
                }
                Writers.Add(port, new WriterEntry {
                    Writer = writer, UniverseID = universe
                });
            }
            catch (Exception ex)
            {
                await Console.Error.WriteAsync(ex.ToString());

                throw new ExecutionError(ex.Message);
            }
            return(new DeviceSource
            {
                Id = port,
                Status = DeviceStatus.InUse,
                Universe = universe
            });
        }
Beispiel #2
0
 public BaseActivityStreamBox(ActivityStreamFilter filter, IActivityStreamRepository ctx)
 {
     this.filter = filter;
     this.ctx    = ctx;
     //Writers.Add(new ObjectStreamWriter(File.Open(PathOf(null), FileMode.Append, FileAccess.Write, FileShare.Read), _serializer, ctx));
     Writers.Add(new ObjectIdStreamWriter(OpenWrite(filter.ToPath(null)), ctx));
 }
Beispiel #3
0
        public void Write(DataBuffer buffer, Type type, object instance)
        {
            if (CanReadWrite(type) == false)
            {
                throw new Exception("Invalid model: Can not read/write");
            }

            DataWriter writer = null;

            lock (LockObject) {
                if (Writers.ContainsKey(type) == false)
                {
                    if (CoveredTypeMap.ContainsKey(type))
                    {
                        writer = Writers[CoveredTypeMap[type]];
                    }
                    else
                    {
                        Writers.Add(type, new DataWriter(this, type));
                    }
                }
            }

            if (writer == null)
            {
                writer = Writers[type];
            }

            writer.Write(buffer, instance);
        }
Beispiel #4
0
        private async void AddMultipleWriterButton_ClickHandler(object sender, RoutedEventArgs e)
        {
            try
            {
                IsBusy = true;

                int previousCount = Writers.Count;

                for (int i = 0; i < 10; i++)
                {
                    IRunnable runnable = UseServiceBus ? (IRunnable) new ServiceBusWriter() : new EventHubsWriter();

                    if (!Settings.DisableRunning)
                    {
                        await runnable.Start().ConfigureAwait(false);
                    }

                    Writers.Add(runnable);
                }

                Data.RecordSettingChange("Writer Count", previousCount, Writers.Count);
            }
            catch (Exception ex)
            {
                Data.Error("MainWindow", "Failed to start multiple writers.", ex);
            }
            finally
            {
                IsBusy = false;
            }
        }
Beispiel #5
0
        public void CreateIndexOn(ActivityStreamFilter filter)
        {
            filter = this.filter.Extend(filter);
            var path = filter.ToUri(null);

            Writers.Add(new FilteredObjectIdStreamWriter(filter, OpenWrite(path), ctx));
            Indexes.Add(filter);
        }
Beispiel #6
0
        private void initLog()
        {
            string nameDateFormat = "yyyy-MM-dd_hh-mm-ss";
            string logDateFormat  = "yyyy-MM-dd hh:mm:ss";

            Log.Message += (o, e) =>
            {
                /* This is going to be purely a message log to keep all messages said in channels by non-bot users,
                 * unless it's a Terraria channel. Source will always be channel name, and each channel will have
                 * a separate folder. */
                if (!String.IsNullOrWhiteSpace(e.Source))
                {
                    Directory.CreateDirectory(Path.Combine(TShock.SavePath, LOG_PATH, e.Source));

                    string filename = $"{DateTime.Now.ToString(nameDateFormat)}.log";
                    string date     = DateTime.Now.ToString(logDateFormat);

                    if (!Writers.ContainsKey(e.Source))
                    {
                        Writers.Add(e.Source, new StreamWriter(
                                        new FileStream(Path.Combine(TShock.SavePath, LOG_PATH, e.Source, filename),
                                                       FileMode.Append, FileAccess.Write, FileShare.Read))
                        {
                            AutoFlush = true
                        });
                    }

                    try
                    {
                        if (e.Severity == LogSeverity.Info)
                        {
                            Writers[e.Source].WriteLine($"{date} - {e.Message}");
                        }
                        else
                        {
                            Writers[e.Source].WriteLine($"{date} - {e.Severity.ToString()}: {e.Message}");
                        }
                    }
                    catch (ObjectDisposedException)
                    {
                        // This is normal behaviour for if we attempt to write to the log after it has been disposed
                    }
                }
            };
        }
Beispiel #7
0
        public void AddReaderWriter(Type type, DataWriter writer, DataReader reader, bool covered = false)
        {
            lock (LockObject) {
                Writers.Add(type, writer);
                Readers.Add(type, reader);
            }

            if (covered)
            {
                var collisions = CoveredTypes.Where(i => i.IsAssignableFrom(type) || type.IsAssignableFrom(i));
                if (collisions.Any())
                {
                    throw new Exception(string.Format("Types {0} and {1} cannot implement one another", collisions.First().Name, type.Name));
                }

                CoveredTypes.Add(type);
            }
        }
Beispiel #8
0
 /// <summary>
 ///		Añade un objeto de escritura del log
 /// </summary>
 public void AddWriter(Interfaces.ILogWriter writer)
 {
     Writers.Add(writer);
 }
Beispiel #9
0
 public void AddWriter(User writer)
 {
     Writers.Add(writer);
 }
Beispiel #10
0
 protected override void RegisterWriters()
 {
     Writers.Add(typeof(ConnectionStringSettings), WriteConnSetting);
 }
 protected override void RegisterWriters()
 {
     Writers.Add(typeof(KeyValueConfigurationElement), WriteAppSetting);
     Writers.Add(typeof(ConnectionStringSettings), WriteConnectionString);
 }
Beispiel #12
0
 public void RegisterReaderAndWriter(PulsarMod plugin, Action <BinaryReader> reader, Action <BinaryWriter> writer)
 {
     Readers.Add(plugin.Name, reader); Writers.Add(plugin.Name, writer);
 }
Beispiel #13
0
 public void RegisterReaderAndWriter(string name, Action <BinaryReader> reader, Action <BinaryWriter> writer)
 {
     Readers.Add(name, reader); Writers.Add(name, writer);
 }
Beispiel #14
0
 public void RegisterWriter(string name, Action <BinaryWriter> writer) => Writers.Add(name, writer);
Beispiel #15
0
 public void RegisterWriter(PulsarMod plugin, Action <BinaryWriter> writer) => Writers.Add(plugin.Name, writer);
Beispiel #16
0
 public static void AddWriter(Writer writer)
 {
     Writers.Add(writer);
 }