Example #1
0
        public Core(string _basePath, int _creaVersion, string _appnameWithVersion, Program.ProgramSettings _ps)
        {
            //Coreが2回以上実体化されないことを保証する
            //2回以上呼ばれた際には例外が発生する
            Instantiate();

            basepath           = _basePath;
            databaseBasepath   = Path.Combine(basepath, databaseDirectory);
            creaVersion        = _creaVersion;
            appnameWithVersion = _appnameWithVersion;
            ps = _ps;
        }
Example #2
0
        public MainWindow(Core _core, Program.Logger _logger, Program.ProgramSettings _psettings, Program.ProgramStatus _pstatus, string _appname, string _version, string _appnameWithVersion, string _lisenceTextFilename, Assembly _entryAssembly, AssemblyName _entryAssemblyName, string _basepath, Process _currentProcess, Action<Exception, Program.ExceptionKind> __OnException, Func<byte[], Version, bool> __UpVersion, List<UnhandledExceptionEventHandler> _unhandledExceptionEventHandlers, List<DispatcherUnhandledExceptionEventHandler> _dispatcherUnhandledExceptionEventHandlers)
        {
            core = _core;
            logger = _logger;
            psettings = _psettings;
            pstatus = _pstatus;
            appname = _appname;
            version = _version;
            appnameWithVersion = _appnameWithVersion;
            lisenceTextFilePath = Path.Combine(_basepath, _lisenceTextFilename);
            entryAssembly = _entryAssembly;

            _OnException = __OnException;
            _UpVersion = __UpVersion;

            unhandledExceptionEventHandlers = _unhandledExceptionEventHandlers;
            dispatcherUnhandledExceptionEventHandlers = _dispatcherUnhandledExceptionEventHandlers;

            InitializeComponent();

            Title = _appnameWithVersion;
            miFile.Header = "ファイル".Multilanguage(19) + "(_F)";
            miClose.Header = "終了".Multilanguage(20) + "(_X)";
            miTool.Header = "ツール".Multilanguage(48) + "(_T)";
            miSettings.Header = "設定".Multilanguage(49) + "(_S)...";
            miMining.Header = "採掘開始".Multilanguage(135) + "(_M)...";
            miDebug.Header = "状況監視".Multilanguage(216) + "(_K)...";
            miHelp.Header = "ヘルプ".Multilanguage(21) + "(_H)";
            miAbout.Header = "CREAについて".Multilanguage(22) + "(_A)...";

            core.iCreaNodeTest.ConnectionKeeped += (sender, e) => this.ExecuteInUIThread(() => tbKeepConnection.Text = "常時接続確立(同期未完了)".Multilanguage(277));
            core.iCreaNodeTest.Syncronized += (sender, e) => this.ExecuteInUIThread(() => tbKeepConnection.Text = "常時接続確立(同期完了)".Multilanguage(278));
            core.iCreaNodeTest.NewVersionDetected += (sender, e) =>
            {

            };
            core.iCreaNodeTest.NumOfConnectingNodesChanged += (sender, e) => this.ExecuteInUIThread(() => tbNumOfConnectingNodes.Text = "接続数:".Multilanguage(219) + core.iCreaNodeTest.NumOfConnectingNodes.ToString());
            core.iCreaNodeTest.NumOfNodesChanged += (sender, e) => this.ExecuteInUIThread(() => tbNumOfNodes.Text = "ノード数:".Multilanguage(220) + core.iCreaNodeTest.NumOfNodes.ToString());

            tbKeepConnection.Text = core.iCreaNodeTest.isKeepConnection ? "常時接続確立".Multilanguage(217) : "常時接続未確立".Multilanguage(218);
            tbNumOfConnectingNodes.Text = "接続数:".Multilanguage(219) + core.iCreaNodeTest.NumOfConnectingNodes.ToString();
            tbNumOfNodes.Text = "ノード数:".Multilanguage(220) + core.iCreaNodeTest.NumOfNodes.ToString();

            Action _UpdateserverStatus = () =>
            {
                this.ExecuteInUIThread(() =>
                {
                    if (core.iCreaNodeTest.serverStatus == P2PNODE.ServerStatus.NotRunning)
                    {
                        rServerStatus.Fill = System.Windows.Media.Brushes.Red;
                        rServerStatus.ToolTip = "他ノードからの接続を受け入れることができません。".Multilanguage(221);
                    }
                    else if (core.iCreaNodeTest.serverStatus == P2PNODE.ServerStatus.RunningButHaventAccepting)
                    {
                        rServerStatus.Fill = System.Windows.Media.Brushes.YellowGreen;
                        rServerStatus.ToolTip = "他ノードからの接続がありません。".Multilanguage(222);
                    }
                    else if (core.iCreaNodeTest.serverStatus == P2PNODE.ServerStatus.HaveAccepting)
                    {
                        rServerStatus.Fill = System.Windows.Media.Brushes.Blue;
                        rServerStatus.ToolTip = "他ノードからの接続を確認しました。".Multilanguage(223);
                    }
                });
            };

            core.iCreaNodeTest.ServerStatusChanged += (sender, e) => _UpdateserverStatus();

            _UpdateserverStatus();

            string instanceName = null;
            PerformanceCounter bytesSentPC = null;
            PerformanceCounter bytesReceivedPC = null;
            float bytesSent1 = 0.0F;
            float bytesReceived1 = 0.0F;
            int timeCounter = 0;

            string pidString = _currentProcess.Id.ToString();

            timer = new Timer((obj) =>
            {
                try
                {
                    if (instanceName == null)
                        instanceName = new PerformanceCounterCategory(".NET CLR Networking 4.0.0.0").GetInstanceNames().Where((elem) => elem.Contains(pidString)).FirstOrDefault();

                    if (instanceName == null)
                        return;

                    if (bytesSentPC == null)
                        bytesSentPC = new PerformanceCounter(".NET CLR Networking 4.0.0.0", "Bytes Sent", instanceName, true);
                    if (bytesReceivedPC == null)
                        bytesReceivedPC = new PerformanceCounter(".NET CLR Networking 4.0.0.0", "Bytes Received", instanceName, true);

                    timeCounter++;

                    float bytesSent2 = bytesSentPC.NextValue();
                    float up = bytesSent2 / 1000;
                    float upSpeed = (bytesSent2 - bytesSent1) / 1000;
                    float upSpeedAverage = (bytesSent2 / timeCounter) / 1000;

                    bytesSent1 = bytesSent2;

                    float bytesReceived2 = bytesReceivedPC.NextValue();
                    float down = bytesReceived2 / 1000;
                    float downSpeed = (bytesReceived2 - bytesReceived1) / 1000;
                    float downSpeedAverage = (bytesReceived2 / timeCounter) / 1000;

                    bytesReceived1 = bytesReceived2;

                    this.ExecuteInUIThread(() =>
                    {
                        tbCommunication.Text = string.Format("送速:{0:0.000}KB/s, 送量:{1:0.000}KB, 受速:{2:0.000}KB/s, 受量:{3:0.000}KB".Multilanguage(224), upSpeed, up, downSpeed, down);
                        tbCommunication.ToolTip = string.Format("送信速度:{0:0.000}KB/s, 平均送信速度:{1:0.000}KB/s, 送信量:{2:0.000}KB, 受信速度:{3:0.000}KB/s, 平均受信速度:{4:0.000}KB/s, 受信量:{5:0.000}KB".Multilanguage(225), upSpeed, upSpeedAverage, up, downSpeed, downSpeedAverage, down);
                    });
                }
                catch (Exception)
                {
                    //<未実装>
                }
            }, null, 0, 1000);
        }