コード例 #1
0
ファイル: ServerHostImpl.cs プロジェクト: stefb965/web-tests
        public async Task <IServerConnection> Connect(IPortableEndPoint endpoint, CancellationToken cancellationToken)
        {
            var networkEndpoint = PortableEndPointSupportImpl.GetEndpoint(endpoint);
            var client          = new TcpClient();
            await client.ConnectAsync(networkEndpoint.Address, networkEndpoint.Port);

            return(new ClientConnection(client));
        }
コード例 #2
0
ファイル: ServerHostImpl.cs プロジェクト: stefb965/web-tests
 public Task <IServerConnection> Listen(IPortableEndPoint endpoint, CancellationToken cancellationToken)
 {
     return(Task.Run <IServerConnection> (() => {
         var networkEndpoint = PortableEndPointSupportImpl.GetEndpoint(endpoint);
         var listener = new TcpListener(networkEndpoint);
         listener.Start();
         Debug.WriteLine("Server started: {0}", listener.LocalEndpoint);
         return new ServerConnection(listener);
     }));
 }
コード例 #3
0
ファイル: ServerHostImpl.cs プロジェクト: stefb965/web-tests
        public Task <IPipeConnection> CreatePipe(IPortableEndPoint endpoint, PipeArguments arguments, CancellationToken cancellationToken)
        {
#if !__TVOS__
            return(Task.Run <IPipeConnection> (() => {
                var networkEndpoint = PortableEndPointSupportImpl.GetEndpoint(endpoint);
                var listener = new TcpListener(networkEndpoint);
                listener.Start();

                var monoPath = Path.Combine(arguments.MonoPrefix, "bin", "mono");

                var cmd = new StringBuilder();
                cmd.Append("--debug ");
                if (arguments.ConsolePath != null)
                {
                    cmd.Append(arguments.ConsolePath);
                }
                else
                {
                    cmd.Append(arguments.Assembly);
                }
                if (arguments.Dependencies != null)
                {
                    foreach (var dependency in arguments.Dependencies)
                    {
                        cmd.AppendFormat(" --dependency={0}", dependency);
                    }
                }
                cmd.AppendFormat(" --gui={0}:{1}", networkEndpoint.Address, networkEndpoint.Port);
                if (arguments.ExtraArguments != null)
                {
                    cmd.AppendFormat(" {0}", arguments.ExtraArguments);
                }
                if (arguments.ConsolePath != null)
                {
                    cmd.Append(" ");
                    cmd.Append(arguments.Assembly);
                }

                var psi = new ProcessStartInfo(monoPath, cmd.ToString());
                psi.UseShellExecute = false;

                foreach (var reserved in ReservedNames)
                {
                    psi.EnvironmentVariables.Remove(reserved);
                }

                var process = Process.Start(psi);

                return new PipeConnection(listener, process);
            }));
#else
            throw new NotSupportedException();
#endif
        }