Example #1
0
        private async Task BeginChargeMoney(string hash)
        {
            Connecting = true;
            (bool res, string ip, string port) = await CustomIO.GetIpAndPort();

            if (res == false)
            {
                // 一応ここでもチェックする
                await CustomDialog.ServerSettingLoadError();

                PageStack.Push(page.GetType());
                page.Frame.Navigate(typeof(ServerSettingPage), PageStack);
                amountOfCharge = 0;
                Connecting     = false;
                PasswordInputPanelVisibility = Visibility.Collapsed;
                return;
            }

            Communication tcp  = new Communication();
            var           stat = await tcp.ConnectAndTest(ip, port);

            if (stat != Communication.TcpError.NoError)
            {
                await CustomDialog.ServerConnectError();

                tcp.Disconnect();
                amountOfCharge = 0;
                Connecting     = false;
                PasswordInputPanelVisibility = Visibility.Collapsed;
                return;
            }


            await tcp.SendMessageAsync(tcp.GetTcpCommand(Communication.TcpCommandNumber.CmdChargeMoney));

            Communication.TcpStatus comStat;
            do
            {
                var resMsg = await tcp.ReceiveMessageAsync();

                comStat = tcp.GetStatus(resMsg);
                switch (comStat)
                {
                case Communication.TcpStatus.StatRequestHash:
                    await tcp.SendMessageAsync(hash);

                    break;

                case Communication.TcpStatus.StatRequestAmountOfMoney:
                    await tcp.SendMessageAsync(amountOfCharge.ToString());

                    break;

                case Communication.TcpStatus.StatFIN:
                    break;

                case Communication.TcpStatus.StatNoUser:
                    await CustomDialog.NoUserError();

                    tcp.Disconnect();
                    amountOfCharge = 0;
                    Connecting     = false;
                    PasswordInputPanelVisibility = Visibility.Collapsed;
                    return;

                default:
                    await CustomDialog.UnknownError();

                    tcp.Disconnect();
                    amountOfCharge = 0;
                    Connecting     = false;
                    PasswordInputPanelVisibility = Visibility.Collapsed;
                    return;
                }
            } while (comStat != Communication.TcpStatus.StatFIN);


            amountOfCharge = 0;
            Connecting     = false;
            PasswordInputPanelVisibility = Visibility.Collapsed;
            await CustomDialog.ChargeComplete();
        }