Exemplo n.º 1
0
        static void Main(string[] args)
        {
            SetCurrentProcessExplicitAppUserModelID("PeerFinderApp");

            if (args[0] == "host")
            {
                HostRole host = new HostRole();
                host.Run();
                return;
            }

            ClientRole client = new ClientRole();

            client.Run();
        }
Exemplo n.º 2
0
        public void Read(TProtocol iprot)
        {
            TField field;

            iprot.ReadStructBegin();
            while (true)
            {
                field = iprot.ReadFieldBegin();
                if (field.Type == TType.Stop)
                {
                    break;
                }
                switch (field.ID)
                {
                case 1:
                    if (field.Type == TType.I32)
                    {
                        this.type         = (ListHostType)iprot.ReadI32();
                        this.__isset.type = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 2:
                    if (field.Type == TType.I32)
                    {
                        this.role         = (HostRole)iprot.ReadI32();
                        this.__isset.role = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                default:
                    TProtocolUtil.Skip(iprot, field.Type);
                    break;
                }
                iprot.ReadFieldEnd();
            }
            iprot.ReadStructEnd();
        }
Exemplo n.º 3
0
        public CalcController(ControllerParameters controllerParameters)
        {
            this.controllerRole = controllerParameters.ControllerRole;
            timer = new Stopwatch();
            Uri url = UrlBuilder.Build(controllerParameters.OpcServerName);

            opcServer            = new OpcDaServer(url);
            opcClient            = new OpcClient(opcServer, controllerParameters.OpcServerSubstring);
            SingleTagsNamesForRW = controllerParameters.SingleTagNamesForRW;

            this.controllerParameters = controllerParameters;

            //Определение creator'ов для переменных

            //0.0. Single Tag for reading/writing to OPC
            singleTagCreator = new SingleTagCreator(opcClient, SingleTagsNamesForRW);
            //1.0. TemperatureCreator
            temperatureCreator = new TemperatureCreator(opcClient);
            //2.0. PressureCreator
            pressureCreator = new PressureCreator(opcClient);

            //
            levelCreator = new LevelCreator(opcClient);
            //3.0. CapacityCreator
            capacityCreator = new CapacityCreator(opcClient, singleTagCreator);
            //4.0. DensityCreator
            densityCreator = new DensityCreator(opcClient, singleTagCreator);
            //5.0. ContentCreator
            contentCreator = new ContentCreator(opcClient, singleTagCreator);
            //6.0. ContentCreator
            levelTankCreator = new LevelTankCreator(opcClient, singleTagCreator);



            //parameterClaculatedSucceedEvent += (o, ea) => CheckForItemInPlcForWritingToPLC(o, (CustomEventArgs)ea);

            //Запускаем процесс проверки изменения тега в PLC для определения разрешения записи данному экземпляру программы в PLC
            //Процесс непрерывно раз в 3 периода поллинга проверяет активность тега PLC
            Task.Run(() => CheckForItemInPlcForWritingToPLC());
        }
Exemplo n.º 4
0
        public void Read(TProtocol iprot)
        {
            TField field;

            iprot.ReadStructBegin();
            while (true)
            {
                field = iprot.ReadFieldBegin();
                if (field.Type == TType.Stop)
                {
                    break;
                }
                switch (field.ID)
                {
                case 1:
                    if (field.Type == TType.Struct)
                    {
                        this.hostAddr = new nebula.HostAddr();
                        this.hostAddr.Read(iprot);
                        this.__isset.hostAddr = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 2:
                    if (field.Type == TType.I32)
                    {
                        this.status         = (HostStatus)iprot.ReadI32();
                        this.__isset.status = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 3:
                    if (field.Type == TType.Map)
                    {
                        {
                            this.leader_parts = new Dictionary <byte[], List <int> >();
                            TMap _map8 = iprot.ReadMapBegin();
                            for (int _i9 = 0; _i9 < _map8.Count; ++_i9)
                            {
                                byte[]     _key10;
                                List <int> _val11;
                                _key10 = iprot.ReadBinary();
                                {
                                    _val11 = new List <int>();
                                    TList _list12 = iprot.ReadListBegin();
                                    for (int _i13 = 0; _i13 < _list12.Count; ++_i13)
                                    {
                                        int _elem14 = 0;
                                        _elem14 = iprot.ReadI32();
                                        _val11.Add(_elem14);
                                    }
                                    iprot.ReadListEnd();
                                }
                                this.leader_parts[_key10] = _val11;
                            }
                            iprot.ReadMapEnd();
                        }
                        this.__isset.leader_parts = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 4:
                    if (field.Type == TType.Map)
                    {
                        {
                            this.all_parts = new Dictionary <byte[], List <int> >();
                            TMap _map15 = iprot.ReadMapBegin();
                            for (int _i16 = 0; _i16 < _map15.Count; ++_i16)
                            {
                                byte[]     _key17;
                                List <int> _val18;
                                _key17 = iprot.ReadBinary();
                                {
                                    _val18 = new List <int>();
                                    TList _list19 = iprot.ReadListBegin();
                                    for (int _i20 = 0; _i20 < _list19.Count; ++_i20)
                                    {
                                        int _elem21 = 0;
                                        _elem21 = iprot.ReadI32();
                                        _val18.Add(_elem21);
                                    }
                                    iprot.ReadListEnd();
                                }
                                this.all_parts[_key17] = _val18;
                            }
                            iprot.ReadMapEnd();
                        }
                        this.__isset.all_parts = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 5:
                    if (field.Type == TType.I32)
                    {
                        this.role         = (HostRole)iprot.ReadI32();
                        this.__isset.role = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 6:
                    if (field.Type == TType.String)
                    {
                        this.git_info_sha         = iprot.ReadBinary();
                        this.__isset.git_info_sha = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                default:
                    TProtocolUtil.Skip(iprot, field.Type);
                    break;
                }
                iprot.ReadFieldEnd();
            }
            iprot.ReadStructEnd();
        }
Exemplo n.º 5
0
        public void Read(TProtocol iprot)
        {
            TField field;

            iprot.ReadStructBegin();
            while (true)
            {
                field = iprot.ReadFieldBegin();
                if (field.Type == TType.Stop)
                {
                    break;
                }
                switch (field.ID)
                {
                case 1:
                    if (field.Type == TType.I32)
                    {
                        this.role         = (HostRole)iprot.ReadI32();
                        this.__isset.role = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 2:
                    if (field.Type == TType.Struct)
                    {
                        this.host = new nebula.HostAddr();
                        this.host.Read(iprot);
                        this.__isset.host = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 3:
                    if (field.Type == TType.I64)
                    {
                        this.cluster_id         = iprot.ReadI64();
                        this.__isset.cluster_id = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 4:
                    if (field.Type == TType.Map)
                    {
                        {
                            this.leader_partIds = new Dictionary <int, List <int> >();
                            TMap _map107 = iprot.ReadMapBegin();
                            for (int _i108 = 0; _i108 < _map107.Count; ++_i108)
                            {
                                int        _key109;
                                List <int> _val110;
                                _key109 = iprot.ReadI32();
                                {
                                    _val110 = new List <int>();
                                    TList _list111 = iprot.ReadListBegin();
                                    for (int _i112 = 0; _i112 < _list111.Count; ++_i112)
                                    {
                                        int _elem113 = 0;
                                        _elem113 = iprot.ReadI32();
                                        _val110.Add(_elem113);
                                    }
                                    iprot.ReadListEnd();
                                }
                                this.leader_partIds[_key109] = _val110;
                            }
                            iprot.ReadMapEnd();
                        }
                        this.__isset.leader_partIds = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 5:
                    if (field.Type == TType.String)
                    {
                        this.git_info_sha         = iprot.ReadBinary();
                        this.__isset.git_info_sha = true;
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                default:
                    TProtocolUtil.Skip(iprot, field.Type);
                    break;
                }
                iprot.ReadFieldEnd();
            }
            iprot.ReadStructEnd();
        }
Exemplo n.º 6
0
        public MainWindow()
        {
            InitializeComponent();
            ////Application Icon for tray.

            TrayMenu = Resources["TrayMenu"] as System.Windows.Controls.ContextMenu;
            ni       = new NotifyIcon();
            string path = AppDomain.CurrentDomain.BaseDirectory;

            ni.Icon         = new System.Drawing.Icon(@"Source\Main.ico");
            ni.Visible      = true;
            ni.DoubleClick +=
                delegate(object sender, EventArgs args)
            {
                if ((args as MouseEventArgs).Button == MouseButtons.Left)
                {
                    // по левой кнопке показываем или прячем окно
                    this.Show();
                    this.WindowState = WindowState.Normal;
                }
            };

            ni.Click += delegate(object sender, EventArgs args)
            {
                if ((args as MouseEventArgs).Button == MouseButtons.Right)
                {
                    // по правой кнопке (и всем остальным) показываем меню
                    TrayMenu.IsOpen = true;
                    Activate(); // нужно отдать окну фокус, см. ниже
                }
            };


            //Creating User Interfaces
            opcSettingsUC = new OPCServerSettingsUC {
                isEnableWritingChecked = true
            };
            dataAccessSettingsUC    = new DataAccessSettingsUC();
            parametersUC            = new ParametersUC();
            serverSynchronizationUC = new ServerSynchronizationUC();
            logUC = new LogUC();


            //При запуске приложения проверяется роль хоста (чтение IP из БД). Если при старте компьютера
            //приложение стучится к БД раньше, чем запустится SQL сервер, будет произведена попытка прочитать роль еще раз
            //(кол-во попыток - в теле конструкции 'for')

            Task.Run(() =>
            {
                for (int i = 0; i < 5; i++)
                {
                    controllerRole = DefineHostRole();
                    Dispatcher.Invoke(() => serverSynchronizationUC.ServerSyncRoleTextBox.Text = controllerRole.ToString());
                    if (controllerRole != HostRole.ERROR)
                    {
                        break;
                    }
                    WriteToLog("Attempt to define Server role. Reading from DataBase failed!");
                    Thread.Sleep(2000);
                }
            }).ContinueWith((o) =>
            {
                //Создаем класс-контейнер для хранения параметров для передачи в контроллер перед началом расчетов
                controllerParameters = new ControllerParameters
                {
                    isEnableWriting     = opcSettingsUC.isEnableWritingChecked,
                    ControllerRole      = this.controllerRole,
                    OpcServerName       = Properties.Settings.Default.OPCServerName,
                    OpcServerSubstring  = Properties.Settings.Default.OPCServerSubString,
                    SingleTagNamesForRW = serverSynchronizationUC.singleTagNamesForRW
                };

                //Start Calculations after launching
                if (controllerRole != HostRole.ERROR)
                {
                    Task.Run(async() => await StartOperation());
                }
                else
                {
                    WriteToLog("Невозможно определить хост-роль сервера");
                }
            });
        }