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)); }
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); })); }
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 }