示例#1
0
 public static void Process(IEventLink eventLink, Object writeSyncObject, Task task,
     String workingDirectory, HashSet<TableMapper> mapping)
 {
     var processor = new TaskProcessor(eventLink, writeSyncObject, task,
         workingDirectory, mapping);
     processor.Process();
 }
示例#2
0
        public SocketReporter(IEventLink eventLink, Mode mode)
            : base(eventLink, mode)
        {
            try
            {
                // пытаемся установить соединение с интерактивным приложением
                // для оповещения о ходе выгрузки данных
                _client = new TcpClient(_hostName, 
                    RemoteControl.Settings.Services.ExchangeService.Port + 1);

                // создаем поток для чтения/записи
                _stream = _client.GetStream();
                _stream.WriteTimeout = _timeout;
                _stream.ReadTimeout = _timeout;

                // устанавливаем флаг, сигнализирующий об успешном подключении
                _connected = true;

                // сообщаем о начале выгрузки
                ProtocolOperation(_Proto_Start_Upload);
            }
            catch (SocketException)
            {
                // пишем в лог предупреждение
                EventLink.Post(ConstHelper.EventSource, EventType.Warning,
                    _interactiveNotAccessible);
            }
        }
 public ConsoleProgressReporter(IEventLink eventLink, Mode mode)
     : base(eventLink, mode)
 {
     Console.Clear();
     Console.WriteLine(mode == Mode.Update ?
         "Начало обновления данных." : "Начало замены данных.");
 }
示例#4
0
 private Query(Mode mode, ICashDataWriter writer, IEventLink eventLink,
     QueryMapper mapper)
 {
     _mode = mode;
     _writer = writer;
     _eventLink = eventLink;
     _mapper = mapper;
 }
示例#5
0
 public void Add(IEventLink sel)
 {
     if (!m_conditions.Contains(sel))
     {
         m_conditions.Add(sel);
         //Console.WriteLine("//// CONDITIONS COUNT: " + m_conditions.Count);
     }
 }
        public IpFixServerChannelSink(IServerChannelSink nextSink, IEventLink eventLink)
        {
            if (nextSink == null) 
                throw new ArgumentNullException("nextSink");

            _nextSink = nextSink;
            _eventLink = eventLink;
        }
        private ObjectDownloadStateManager(IEventLink eventLink, Mode mode, Object writeSync)
        {
            if (eventLink == null)
                throw new ArgumentNullException("eventLink");

            _eventLink = eventLink;
            _mode = mode;
            _writeSync = writeSync;
        }
示例#8
0
 private TaskProcessor(IEventLink eventLink, Object writeSyncObject, Task task,
     String workingDirectory, HashSet<TableMapper> mapping)
 {
     _eventLink = eventLink;
     _writeSyncObject = writeSyncObject;
     _task = task;
     _workingDirectory = workingDirectory;
     _mapping = mapping;
 }
        private void CreateEventLink(IEventLink eventLink)
        {
            var eventNode = this.ViewModel.GetOrCreateEventNode(this.FindViewModel(eventLink.EventReference.Value.AsElement().Id));

            foreach (var component in this.ViewModel.GetAllComponentsNode(eventLink.Parent.Parent.AsElement().Id))
            {
                this.ViewModel.GetOrCreateEventConnection(component, eventNode);
            }
        }
示例#10
0
        /// <summary>
        /// Создает экземпляр класса
        /// </summary>
        /// <param name="target">Объект, к которому нужно обеспечить доступ</param>
        protected CustomHost(T target)
        {
            if (target == default(T))
            {
                throw new ArgumentNullException("target");
            }

            _target    = target;
            _eventLink = null;
        }
        public IpFixServerChannelSink(IServerChannelSink nextSink, IEventLink eventLink)
        {
            if (nextSink == null)
            {
                throw new ArgumentNullException("nextSink");
            }

            _nextSink  = nextSink;
            _eventLink = eventLink;
        }
示例#12
0
 private TableUpdater(Mode mode, ICashDataReader reader, IEventLink eventLink,
     TableMapper mapper, IProgressReporter reporter)
 {
     _mode = mode;
     _reader = reader;
     _eventLink = eventLink;
     _mapper = mapper;
     _reporter = reporter;
     _executor = new FbExecutor { Executor = Execute };
 }
示例#13
0
        private Downloader(IEventLink eventLink, String workingDirectory, Mode mode)
        {
            if (eventLink == null)
                throw new ArgumentNullException("eventLink");
            if (String.IsNullOrEmpty(workingDirectory))
                throw new ArgumentNullException("workingDirectory");

            _eventLink = eventLink;
            _workingDirectory = workingDirectory;
            _mode = mode;
            _mappers = GenericSerializer.Deserialize<HashSet<QueryMapper>>(MappingFile);
        }
示例#14
0
        /// <summary>
        /// Создает экземпляр класса
        /// </summary>
        /// <param name="eventLink">Логгер</param>
        /// <param name="writeSync">Объект для синхронизации записи изменеий в базу</param>
        public PriceListHandler(IEventLink eventLink, Object writeSync)
        {
            if (eventLink == null)
                throw new ArgumentNullException("eventLink");
            if (writeSync == null)
                throw new ArgumentNullException("writeSync");

            _eventLink = eventLink;
            _writeSync = writeSync;
            _worker = new PeriodicWorker(WatchForPriceLists);
            _worker.Start(_workerPeriod);
        }
示例#15
0
        /// <summary>
        /// Создает экземпляр класса
        /// </summary>
        /// <param name="eventLink">Интерфейс журнала событий</param>
        public TsManager(IEventLink eventLink)
        {
            if (eventLink == null)
            {
                throw new ArgumentNullException("eventLink");
            }

            // загружаем реализации логики работы СКУД
            _eventLink = eventLink;
            _eventLink.Post(TsGlobalConst.EventSource, "Загрузка реализаций логики работы СКУД");
            _logicLoader = new AMCSLogicLoader(TsGlobalConst.GetACMSLogicDirectory());

            // загрузка конфигурации
            _eventLink.Post(TsGlobalConst.EventSource, "Загрузка конфигурации менеджера");
            _settings = GenericSerializer.Deserialize <TsManagerSettings>(TsGlobalConst.GetSettingsFile(),
                                                                          false, _logicLoader.GetLogicSettingsTypes());
            _workers = new List <TsWorker>();

            // просматриваем конфигурацию и создаем по рабочему потоку для каждого турникета
            foreach (AMCSLogicSettings logicSettings in _settings.LogicSettings)
            {
                foreach (TsUnitSettings unitSettings in logicSettings.Units)
                {
                    try
                    {
                        // создаем реализацию логики работы СКУД и инициализируем ее параметры
                        IAMCSLogic logic = _logicLoader.CreateLogic(logicSettings.AcmsName);
                        logic.Settings = logicSettings.LogicSettings;

                        // создаем рабочий поток
                        TsWorker worker = new TsWorker(logic, unitSettings, _eventLink);
                        _eventLink.Post(TsGlobalConst.EventSource, string.Format(
                                            "Создан рабочий поток для турникета {0}, СКУД \"{1}\"",
                                            unitSettings, logicSettings.AcmsName));

                        // добавляем его в список
                        _workers.Add(worker);
                    }
                    catch (Exception e)
                    {
                        string checkPoint = string.Format(
                            "Создание рабочего потока для турникета {0}, СКУД \"{1}\"",
                            unitSettings, logicSettings.AcmsName);
                        _eventLink.Post(TsGlobalConst.EventSource, checkPoint, e);
                    }
                }
            }
        }
示例#16
0
        /// <summary>
        /// Создает экземпляр класса
        /// </summary>
        /// <param name="eventLink">Логгер</param>
        /// <param name="workingDirectory">Рабочий каталог</param>
        /// <param name="writeSyncObject">Объект для синхронизации записи данных в базу</param>
        public Queue(IEventLink eventLink, String workingDirectory, Object writeSyncObject)
        {
            if (eventLink == null)
                throw new ArgumentNullException("eventLink");
            if (String.IsNullOrEmpty(workingDirectory))
                throw new ArgumentNullException("workingDirectory");
            if (writeSyncObject == null)
                throw new ArgumentNullException("writeSyncObject");

            _eventLink = eventLink;
            _workingDirectory = workingDirectory;
            _writeSyncObject = writeSyncObject;
            _queueSyncObject = new Object();
            _queue = new Queue<Task>(GenericSerializer.Deserialize<List<Task>>(SpoolFile));
            _mapping = GenericSerializer.Deserialize<HashSet<TableMapper>>(MappingFile);
            _worker = new PeriodicWorker(WatchQueueCallback);
            _worker.Start(_period);
        }
示例#17
0
        /// <summary>
        /// Создает экземпляр очереди отложенных обновлений
        /// </summary>
        /// <param name="eventLink">Логгер</param>
        /// <param name="immediateQueue">Очередь неотложных обновлений</param>
        /// <param name="writeSync">Объект для синхронизации записи в базу</param>
        public DelayedQueue(IEventLink eventLink, Queue immediateQueue, Object writeSync,
            String workingDirectory)
        {
            if (eventLink == null)
                throw new ArgumentNullException("eventLink");
            if (immediateQueue == null)
                throw new ArgumentNullException("immediateQueue");
            if (writeSync == null)
                throw new ArgumentNullException("writeSync");
            if (String.IsNullOrEmpty(workingDirectory))
                throw new ArgumentNullException("workingDirectory");

            _eventLink = eventLink;
            _immediateQueue = immediateQueue;
            _writeSync = writeSync;
            _workingDirectory = workingDirectory;
            _worker = new PeriodicWorker(WatchForDelayedUpdates);
            _worker.Start(_workerPeriod);
        }
示例#18
0
        /// <summary>
        /// Регистрация трэкера в ремоутинг-инфраструктуре
        /// </summary>
        public static void RegisterTracker(IEventLink eventLink)
        {
            lock (_syncObject)
            {
                if (_instance == null)
                    // создаем трэкер, если он еще не создан
                    _instance = new IpFixTrackingHandler(eventLink);

                // проверяем, не зарегистрирован ли еще один такой же трэкер
                foreach (ITrackingHandler thrackingHandler in TrackingServices.RegisteredHandlers)
                {
                    if (thrackingHandler is IpFixTrackingHandler)
                        // второй такой же объект регистрировать не нужно
                        return;
                }

                // регистрируем его
                TrackingServices.RegisterTrackingHandler(_instance);
            }
        }
示例#19
0
        /// <summary>
        /// Создает экземпляр класса
        /// </summary>
        /// <param name="amcsLogic">Реализация логики работы СКУД</param>
        /// <param name="unitSettings">Парамтеры тукникета</param>
        /// <param name="eventLink">Интерфейс журнала событий</param>
        public TsWorker(IAMCSLogic amcsLogic, TsUnitSettings unitSettings, IEventLink eventLink)
        {
            if (amcsLogic == null)
            {
                throw new ArgumentNullException("amcsLogic");
            }
            if (unitSettings == null)
            {
                throw new ArgumentNullException("unitSettings");
            }
            if (eventLink == null)
            {
                throw new ArgumentNullException("eventLink");
            }

            _amcsLogic     = amcsLogic;
            _unitSettings  = unitSettings;
            _eventLink     = eventLink;
            _terminated    = new ManualResetEvent(false);
            _workingThread = new Thread(WorkWithTurnstile);
        }
        protected CustomProgressReporter(IEventLink eventLink, Mode mode)
        {
            _eventLink = eventLink;
            _mode = mode;
            _startTime = DateTime.Now;

            var message = String.Empty;
            switch (_mode)
            {
                case Mode.Replace:
                    message = _startReplace;
                    break;
                case Mode.Update:
                    message = _startUpdate;
                    break;
                default:
                    message = _startDeletion;
                    break;
            }

            _eventLink.Post(ConstHelper.EventSource, message);
        }
示例#21
0
        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="eventLink">Журнал событий</param>
        public DeviceManager(IEventLink eventLink)
        {
            if (eventLink == null)
            {
                throw new ArgumentNullException("eventLink");
            }

            // инициализация диспетчера
            _eventLink    = eventLink;
            devicesTable  = new Dictionary <string, DeviceHelper>();
            dataLocker    = new object();
            sessionsTable = new Dictionary <string, SessionHelper>();

            // создание пула портов
            CreateSerialPortsPool();
            // загрузка драйверных сборок
            deviceTypes = LoadDeviceTypes(GetDeviceManagerDirectory());
            // загрузка конфигурации устройств
            LoadDevices(GetDeviceManagerSettingsFile());
            // атктивация устройств
            ActivateDevices();
        }
        /// <summary>
        /// Регистрация трэкера в ремоутинг-инфраструктуре
        /// </summary>
        public static void RegisterTracker(IEventLink eventLink)
        {
            lock (_syncObject)
            {
                if (_instance == null)
                {
                    // создаем трэкер, если он еще не создан
                    _instance = new IpFixTrackingHandler(eventLink);
                }

                // проверяем, не зарегистрирован ли еще один такой же трэкер
                foreach (ITrackingHandler thrackingHandler in TrackingServices.RegisteredHandlers)
                {
                    if (thrackingHandler is IpFixTrackingHandler)
                    {
                        // второй такой же объект регистрировать не нужно
                        return;
                    }
                }

                // регистрируем его
                TrackingServices.RegisterTrackingHandler(_instance);
            }
        }
示例#23
0
        ///<summary>
        ///Searches the parts that are used in the condition of Rule r. Events of a certain type emitted
        ///by thow parts are connected to the condition of Rule r so it can be evaluated if such an event
        ///occurs
        ///</summary>
        ///<param name="r">The rule with a condition and action</param>
        ///<param name="p">A part where p itself or one of it subparts will emit events that are of interest
        ///for the condition of Rule r</param>
        ///<param name="gel">Links the renderer with the condition so appropriate queries can be executed by the condition.
        ///It also allows the action to use the renderer afterwards to change properties in the user interface at runtime</param>

        protected void link(Rule r, Part p, IEventLink sel)
        {
            m_conditions.Add(sel);
            IEnumerator eventsEnum = r.Condition.GetEvents().GetEnumerator();
            try
            {
                while (eventsEnum.MoveNext())
                {
                    if (eventsEnum.Current is Event)
                    {
                        LinkEvent(eventsEnum.Current, p);
                    }
                    else if (eventsEnum.Current is Op)
                    {
                        LinkOp(eventsEnum.Current, p);
                    }
                    else if (eventsEnum.Current is Equal)
                    {
                        LinkEqual(eventsEnum.Current, p);
                    }
                }
            }
            catch (ArgumentException ae)
            {
                Console.WriteLine("Invalid argument: {0}", ae);
                #if !COMPACT
                Console.WriteLine("Caused by: {0}", ae.ParamName);
                #endif
            }
            catch (Exception be)
            {
                Console.WriteLine("Unexpected failure:");
                Console.WriteLine(be);
                Console.WriteLine("Please contact the uiml.net maintainer with the above output.");
            }
        }
示例#24
0
 public static string GetMessageTypeFullName(this IEventLink eventlink)
 {
     return(eventlink.EventReference.Value.Parent.Namespace + "." + eventlink.EventReference.Value.CodeIdentifier);
 }
示例#25
0
 public static void Execute(Mode mode, ICashDataReader reader, IEventLink eventLink,
     TableMapper mapper, IProgressReporter reporter)
 {
     using (var updater = new TableUpdater(mode, reader, eventLink, mapper, reporter))
     {
         updater.Execute();
     }
 }
 /// <summary>
 /// Создает экземпляр класса
 /// </summary>
 /// <param name="eventLink">Логгер</param>
 /// <remarks>Потрбуется всего один трэкер данного типа, поэтому конструктор закрыт</remarks>
 private IpFixTrackingHandler(IEventLink eventLink)
 {
     _eventLink = eventLink;
 }
 private static void Mark(IEventLink eventLink, Mode mode, Object writeSync,
     Action<FbExecutor, IDbCommand> setParamsAction)
 {
     var manager = new ObjectDownloadStateManager(eventLink, mode, writeSync);
     manager.Mark(setParamsAction);
 }
示例#28
0
        /// <summary>
        /// Загрузить итоговые данные за диапазон дат
        /// </summary>
        /// <param name="eventLink">Логгер</param>
        /// <param name="workingDirectory">Рабочий каталог</param>
        /// <param name="mode">Режим загрузки</param>
        /// <param name="date1">Начало диапазона</param>
        /// <param name="date2">Конец диапазона</param>
        /// <returns>Имя файла, куда был сохранен результат выполнения запросов</returns>
        public static String Download(IEventLink eventLink, String workingDirectory,
            Mode mode, DateTime date1, DateTime date2)
        {
            if (mode != Mode.DatesRange && mode != Mode.OperationsLog)
                ThrowInvalidMode(mode);

            return Download(eventLink, workingDirectory, mode, (reader) =>
            {
                reader.NewParameter("@date1", date1.StartOfTheDay());
                reader.NewParameter("@date2", date2.EndOfTheDay());
            });
        }
示例#29
0
 public static void Execute(Mode mode, ICashDataWriter writer, IEventLink eventLink,
     QueryMapper mapper, Action<FbReader> setParamsAction)
 {
     var query = new Query(mode, writer, eventLink, mapper);
     query.Execute(setParamsAction);
 }
示例#30
0
 internal DeviceManagerTrackingHandler(IEventLink eventLink, bool debugInfo)
 {
     _eventLink = eventLink;
     _debugInfo = debugInfo;
     TrackingServices.RegisterTrackingHandler(this);
 }
示例#31
0
        /// <summary>
        /// Загрузить итоговые данные
        /// </summary>
        /// <param name="eventLink">Логгер</param>
        /// <param name="workingDirectory">Рабочий каталог</param>
        /// <param name="mode">Режим загрузки</param>
        /// <returns>Имя файла, куда был сохранен результат выполнения запросов</returns>
        public static String Download(IEventLink eventLink, String workingDirectory, 
            Mode mode)
        {
            if (mode == Mode.DatesRange || mode == Mode.OperationsLog ||
                mode == Mode.ShiftsRange)
                ThrowInvalidMode(mode);

            return Download(eventLink, workingDirectory, mode, null);
        }
 /// <summary>
 /// Установка признака успешной загрузки для объектов
 /// </summary>
 /// <param name="eventLink">Логгер</param>
 /// <param name="mode">Режим загрузки</param>
 /// <param name="writeSync">Объект для синхронизации записи в базу данных</param>
 public static void Mark(IEventLink eventLink, Mode mode, Object writeSync)
 {
     Mark(eventLink, mode, writeSync, null);
 }
示例#33
0
        /// <summary>
        /// Загрузить итоговые данные за диапазон смен
        /// </summary>
        /// <param name="eventLink">Логгер</param>
        /// <param name="workingDirectory">Рабочий каталог</param>
        /// <param name="mode">Режим загрузки</param>
        /// <param name="shift1">Начало диапазона</param>
        /// <param name="shift2">Конец диапазона</param>
        /// <returns>Имя файла, куда был сохранен результат выполнения запросов</returns>
        public static String Download(IEventLink eventLink, String workingDirectory,
            Mode mode, Int32 shift1, Int32 shift2)
        {
            if (mode != Mode.ShiftsRange)
                ThrowInvalidMode(mode);

            return Download(eventLink, workingDirectory, mode, (reader) =>
            {
                reader.NewParameter("@number1", shift1);
                reader.NewParameter("@number2", shift2);
            });
        }
 /// <summary>
 /// Установка признака успешной загрузки для объектов за диапазон дат
 /// </summary>
 /// <param name="eventLink">Логгер</param>
 /// <param name="mode">Режим загрузки</param>
 /// <param name="writeSync">Объект для синхронизации записи в базу данных</param>
 /// <param name="date1">Начало диапазона</param>
 /// <param name="date2">Конец диапазона</param>
 public static void Mark(IEventLink eventLink, Mode mode, Object writeSync,
     DateTime date1, DateTime date2)
 {
     Mark(eventLink, mode, writeSync, (executor, command) =>
     {
         executor.NewParameter(command, "@date1", date1);
         executor.NewParameter(command, "@date2", date2);
     });
 }
示例#35
0
 private static String Download(IEventLink eventLink, String workingDirectory, Mode mode,
     Action<FbReader> setParamsAction)
 {
     var downloader = new Downloader(eventLink, workingDirectory, mode);
     return downloader.Download(setParamsAction);
 }
 /// <summary>
 /// Установка признака успешной загрузки для объектов за диапазон смен
 /// </summary>
 /// <param name="eventLink">Логгер</param>
 /// <param name="mode">Режим загрузки</param>
 /// <param name="writeSync">Объект для синхронизации записи в базу данных</param>
 /// <param name="shift1">Начало диапазона</param>
 /// <param name="shift2">Конец диапазона</param>
 public static void Mark(IEventLink eventLink, Mode mode, Object writeSync,
     Int32 shift1, Int32 shift2)
 {
     Mark(eventLink, mode, writeSync, (executor, command) =>
     {
         executor.NewParameter(command, "@number1", shift1);
         executor.NewParameter(command, "@number2", shift2);
     });
 }
        private void CreateEventLink(IEventLink eventLink)
        {
            var eventNode = this.ViewModel.GetOrCreateEventNode(this.FindViewModel(eventLink.EventReference.Value.AsElement().Id));

            foreach (var component in this.ViewModel.GetAllComponentsNode(eventLink.Parent.Parent.AsElement().Id))
            {
                this.ViewModel.GetOrCreateEventConnection(component, eventNode);
            }
        }
示例#38
0
 /// <summary>
 /// Создает экземпляр класса
 /// </summary>
 /// <param name="eventLink">Логгер</param>
 /// <remarks>Потрбуется всего один трэкер данного типа, поэтому конструктор закрыт</remarks>
 private IpFixTrackingHandler(IEventLink eventLink)
 {
     _eventLink = eventLink;
 }