Esempio n. 1
0
        private static bool CheckConnectFed()
        {
            var timerRestoreConnect = Timers[UpdatelEnum.RestoreConnection];

            timerRestoreConnect.Enabled = false;

            Logger.Trace("Проверка коннекта.");

            bool result;

            if (MainActivityRer.CheckConnectDataBase())
            {
                result = MainActivityRer.CheckConnectSocket();
            }
            else
            {
                result = false;
            }

            SwitchTimers(result);

            if (!result)
            {
                Logger.Trace("Коннекта пока нет. Попробуем позже через {0} сек...", timerRestoreConnect.Interval / 1000);
                timerRestoreConnect.Enabled = true;
            }
            else
            {
                Logger.Trace("КОННЕКТ ПОЯВИЛСЯ! :) Работаем в штатном режиме.");
            }
            _isConnected = result;
            return(result);
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            SQL.ConnectionString = ConfigurationManager.AppSettings["ConsoleConnectionString"].ToString(); //"Provider=PostgreSQL; Unicode=true; host=192.168.1.11; Database=webtalonXtula; user=asu; password=asu";
            var threadCount = Settings.Default.ThreadCount;

            var lpu = "2370b2cd-c7ec-432b-aed5-93e074ee45a9";

            var datetimebegin = DateTime.Now;

            MainActivityRer.UpdatePrescs(1, datetimebegin);
        }
Esempio n. 3
0
        private void DoWorkFed()
        {
            _threadCount = 0;
            MainActivityRer.Initialize(Settings.Default.ConnectionStringDatabase);

            Logger.Trace("WCFLibClient.ConnectionString: <{0}>", SQL.ConnectionString);

            try
            {
                /*Timers[UpdatelEnum.UpdateLpuSettings] = CreateTimer(TimerElapsedUpdateLpuSettings, Settings.Default.TimerIntervalUpdateLpuSettings, "TimerIntervalUpdateLpuSettings");
                 * Timers[UpdatelEnum.UpdateAreas] = CreateTimer(TimerElapsedUpdateAreas, Settings.Default.TimerIntervalUpdateAreas, "TimerIntervalUpdateAreas");
                 * Timers[UpdatelEnum.UpdateSchedule] = CreateTimer(TimerElapsedUpdateSchedule, Settings.Default.TimerIntervalUpdateSchedule, "TimerIntervalUpdateSchedule");
                 * Timers[UpdatelEnum.UpdatePeople] = CreateTimer(TimerElapsedUpdatePeople, Settings.Default.TimerIntervalUpdatePeople, "TimerIntervalUpdatePeople");
                 * Timers[UpdatelEnum.UpdateArrival] = CreateTimer(TimerElapsedUpdateArrival, Settings.Default.TimerIntervalUpdateArrival, "TimerIntervalUpdateArrival");
                 * Timers[UpdatelEnum.UpdateReferral] = CreateTimer(TimerElapsedUpdateReferral, Settings.Default.TimerIntervalUpdateReferral, "TimerIntervalUpdateReferral");
                 * Timers[UpdatelEnum.UpdateCall] = CreateTimer(TimerElapsedUpdateCall, Settings.Default.TimerIntervalUpdateCall, "TimerIntervalUpdateCall");
                 * Timers[UpdatelEnum.CleanBuffers] = CreateTimer(TimerElapsedCleanBuffers, Settings.Default.TimerIntervalCleanBuffers, "TimerIntervalCleanBuffers");
                 * Timers[UpdatelEnum.RestoreConnection] = CreateTimer(TimerElapsedRestoreConnect, Settings.Default.TimerIntervalRestoreConnect, "TimerRestoreConnect");
                 * Timers[UpdatelEnum.UpdateLpuNames] = CreateTimer(TimerElapsedUpdateLpuNames, Settings.Default.TimerIntervalUpdateLpuNames, "TimerUpdateLpuNames");*/
                Timers[UpdatelEnum.UpdatePrescs] = CreateTimer(TimerElapsedUpdatePrescs, Settings.Default.TimerIntervalUpdatePrescs, "TimerUpdatePrescs");

                if (CheckConnectFed())
                {
                    SwitchTimers(false);

                    if (_isConnected)
                    {
                        UpdateFedBase(UpdatelEnum.UpdateSchedule);
                    }

                    if (!_isPause && _isConnected)
                    {
                        SwitchTimers(true);

                        foreach (var timer in Timers)
                        {
                            LogNextTime(timer.Value, timer.Key.ToString());
                        }
                    }
                }
            }

            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }
Esempio n. 4
0
        /*
         * private void TimerElapsedUpdateLpuSettings(object sender, ElapsedEventArgs e)
         * {
         *  var timer = Timers[UpdatelEnum.UpdateLpuSettings];
         *  timer.Enabled = false;
         *  UpdateFedBase(UpdatelEnum.UpdateLpuSettings);
         *  if (!_isPause && _isConnected)
         *  {
         *      timer.Enabled = true;
         *      LogNextTime(Timers[UpdatelEnum.UpdateLpuSettings], UpdatelEnum.UpdateLpuSettings.ToString());
         *  }
         * }
         *
         * private void TimerElapsedUpdateAreas(object sender, ElapsedEventArgs e)
         * {
         *  var timer = Timers[UpdatelEnum.UpdateAreas];
         *  timer.Enabled = false;
         *  UpdateFedBase(UpdatelEnum.UpdateAreas);
         *  if (!_isPause && _isConnected)
         *  {
         *      timer.Enabled = true;
         *      LogNextTime(Timers[UpdatelEnum.UpdateAreas], UpdatelEnum.UpdateAreas.ToString());
         *  }
         * }
         *
         * private void TimerElapsedUpdateSchedule(object sender, ElapsedEventArgs e)
         * {
         *  var timer = Timers[UpdatelEnum.UpdateSchedule];
         *  timer.Enabled = false;
         *  UpdateFedBase(UpdatelEnum.UpdateSchedule);
         *  if (!_isPause && _isConnected)
         *  {
         *      timer.Enabled = true;
         *      LogNextTime(Timers[UpdatelEnum.UpdateSchedule], UpdatelEnum.UpdateSchedule.ToString());
         *  }
         * }
         *
         * private void TimerElapsedUpdatePeople(object sender, ElapsedEventArgs e)
         * {
         *  var timer = Timers[UpdatelEnum.UpdatePeople];
         *  timer.Enabled = false;
         *  UpdateFedBase(UpdatelEnum.UpdatePeople);
         *  if (!_isPause && _isConnected)
         *  {
         *      timer.Enabled = true;
         *      LogNextTime(Timers[UpdatelEnum.UpdatePeople], UpdatelEnum.UpdatePeople.ToString());
         *  }
         * }
         *
         * private void TimerElapsedUpdateArrival(object sender, ElapsedEventArgs e)
         * {
         *  var timer = Timers[UpdatelEnum.UpdateArrival];
         *  timer.Enabled = false;
         *  UpdateFedBase(UpdatelEnum.UpdateArrival);
         *  if (!_isPause && _isConnected)
         *  {
         *      timer.Enabled = true;
         *      LogNextTime(Timers[UpdatelEnum.UpdateArrival], UpdatelEnum.UpdateArrival.ToString());
         *  }
         * }
         *
         * private void TimerElapsedUpdateReferral(object sender, ElapsedEventArgs e)
         * {
         *  var timer = Timers[UpdatelEnum.UpdateReferral];
         *  timer.Enabled = false;
         *  UpdateFedBase(UpdatelEnum.UpdateReferral);
         *  if (!_isPause && _isConnected)
         *  {
         *      timer.Enabled = true;
         *      LogNextTime(Timers[UpdatelEnum.UpdateReferral], UpdatelEnum.UpdateReferral.ToString());
         *  }
         * }
         *
         * private void TimerElapsedUpdateCall(object sender, ElapsedEventArgs e)
         * {
         *  var timer = Timers[UpdatelEnum.UpdateCall];
         *  timer.Enabled = false;
         *  UpdateFedBase(UpdatelEnum.UpdateCall);
         *  if (!_isPause && _isConnected)
         *  {
         *      timer.Enabled = true;
         *      LogNextTime(Timers[UpdatelEnum.UpdateCall], UpdatelEnum.UpdateCall.ToString());
         *  }
         * }
         *
         * private void TimerElapsedCleanBuffers(object sender, ElapsedEventArgs e)
         * {
         *  var timer = Timers[UpdatelEnum.CleanBuffers];
         *  timer.Enabled = false;
         *  UpdateFedBase(UpdatelEnum.CleanBuffers);
         *  if (!_isPause && _isConnected)
         *  {
         *      timer.Enabled = true;
         *      LogNextTime(Timers[UpdatelEnum.CleanBuffers], UpdatelEnum.CleanBuffers.ToString());
         *  }
         * }
         *
         * private void TimerElapsedUpdateLpuNames(object sender, ElapsedEventArgs e)
         * {
         *  var timer = Timers[UpdatelEnum.UpdateLpuNames];
         *  timer.Enabled = false;
         *  UpdateFedBase(UpdatelEnum.UpdateLpuNames);
         *  if (!_isPause && _isConnected)
         *  {
         *      timer.Enabled = true;
         *      LogNextTime(Timers[UpdatelEnum.UpdateLpuNames], UpdatelEnum.UpdateLpuNames.ToString());
         *  }
         * }
         *
         * private void TimerElapsedRestoreConnect(object sender, ElapsedEventArgs e)
         * {
         *  CheckConnectFed();
         * }
         */
        private static void UpdateFedBase(UpdatelEnum aCode)
        {
            // ограничиваем размер очереди
            if (_threadCount >= 10)
            {
                Logger.Trace("CAST AWAY code: {1} (current count = {0})", _threadCount, aCode);
                return;
            }

            //кол ожидающих в очереди
            _threadCount++;
            Logger.Trace("Thread count = {0} ++ (code: {1})", _threadCount, aCode);

            // блокируем параллелльное вхождение
            lock (InstanceLockObjectFed)
            {
                bool res = false;
                try
                {
                    var timeBegin = DataRepository.GetCurrentTimestamp(); //запускаем все проливки в одно время

                    Logger.Trace("Service: {0}; datetime_on: {1}", aCode, timeBegin.ToString());
                    switch (aCode)
                    {
                    case UpdatelEnum.UpdatePrescs:
                        MainActivityRer.UpdatePrescs(Settings.Default.ThreadCount, timeBegin);
                        res = true;
                        break;

/*
 *                      case UpdatelEnum.UpdateLpuSettings:
 *                          //MainActivityRer.UpdateLpuSettings(Settings.Default.ThreadCount);
 *                          res = true;
 *                          break;
 *
 *                      case UpdatelEnum.UpdateAreas:
 *                          //MainActivityRer.UploadAreas(Settings.Default.ThreadCount);
 *                          res = true;
 *                          break;
 *
 *                      case UpdatelEnum.UpdateArrival:
 *                          //MainActivityRer.UploadArrival(true, Settings.Default.ThreadCount);
 *                          res = true;
 *                          break;
 *
 *                      case UpdatelEnum.UpdateCall:
 *                          //MainActivityRer.UploadCall(Settings.Default.ThreadCount);
 *                          res = true;
 *                          break;
 *
 *                      case UpdatelEnum.UpdatePeople:
 *                          //MainActivityRer.UploadPeople(true, Settings.Default.ThreadCount);
 *                          res = true;
 *                          break;
 *
 *                      case UpdatelEnum.UpdateReferral:
 *                          //MainActivityRer.UploadReferral(Settings.Default.ThreadCount);
 *                          res = true;
 *                          break;
 *
 *                      case UpdatelEnum.UpdateSchedule:
 *                          //MainActivityRer.UpdateDoctors(Settings.Default.ThreadCount, timeBegin);
 *                          //MainActivityRer.UploadSchedule(true, Settings.Default.ThreadCount, timeBegin);
 *                          //MainActivityRer.UploadPeople(true, Settings.Default.ThreadCount, timeBegin);
 *                          //MainActivityRer.UploadArrival(true, Settings.Default.ThreadCount, timeBegin);
 *                          res = true;
 *                          break;
 *
 *                      case UpdatelEnum.UpdateLpuNames:
 *                          //MainActivityRer.UpdateLpuNames();
 *                          res = true;
 *                          break;
 *
 *                      case UpdatelEnum.CleanBuffers:
 *                          //MainActivityRer.CleanBuffers();
 *                          res = true;
 *                          break;*/
                    }
                }
                catch (Exception ex)
                {
                    Logger.Error(ex);
                    res = false;
                }
                finally
                {
                    _threadCount--;
                    Logger.Trace("Service: {0} - {1}.   Thread count = {2} --", aCode, res, _threadCount);

                    if (!res)
                    {
                        CheckConnectFed();
                    }
                }
            }
        }