예제 #1
0
        private async void InstanceOnItemClicked(object sender, HostSelectionDataSource.ServerDataItem e)
        {
            var endpointAddress = new HostEndpointAddress(e.EndPoint.Address.ToString(), e.HttpsPorts[0]);

            try
            {
                var portOpen = await SocketHelper.IsPortOpenAsync(endpointAddress.IpAddress, endpointAddress.Port, TimeSpan.FromSeconds(1));

                if (!portOpen)
                {
                    ToastHelper.Display($"Failed to connect to {endpointAddress.FullAddress}", ToastLength.Long);
                    return;
                }

                using (var agent = GrpcApplicationAgentFactory.Create(GrpcChannelHub.GetChannelFor(endpointAddress)))
                {
                    var authenticated = await CheckIsAuthenticatedAsync(agent);

                    if (!authenticated)
                    {
                        if (!await TryUpdateAuthenticationAsync(agent, endpointAddress))
                        {
                            return;
                        }
                    }

                    NavigateToHost(e);
                }
            }
            catch (Exception exception)
            {
                ToastHelper.Display($"Failed to connect to {endpointAddress.FullAddress}", ToastLength.Long);
                Log.Error(exception);
            }
        }
예제 #2
0
        private void NavigateToHost(HostSelectionDataSource.ServerDataItem e)
        {
            var fragment = new HostControlFragment();

            fragment.WithAgent(e.EndPoint.Address.ToString(), e.MachineName, e.HttpsPorts[0]);
            fragment.DisplayListHeader = true;
            var bundle = new Bundle();

            bundle.PutInt(HostControlFragment.ArgumentTargetPort, e.HttpsPorts[0]);
            bundle.PutString(HostControlFragment.ArgumentTargetAddress, e.EndPoint.Address.ToString());
            bundle.PutString(HostControlFragment.ArgumentTargetMachineName, e.MachineName);
            fragment.Arguments = bundle;

            if (Activity?.SupportFragmentManager == null)
            {
                Log.Error("-------------------------------- ERROR HAPPENED");
            }
            using (var transaction = Activity.SupportFragmentManager.BeginTransaction())
            {
                transaction.SetStatusBarTitle(e.MachineName);
                transaction.ReplaceContentAnimated(fragment);
                transaction.Commit();
            }
        }