pub struct TcpTransport { /* private fields */ }
Expand description

High level management interface for TCP transports

Be aware that only one TcpTransport can exist per node, as it registers itself as a router for the TCP address type. Multiple calls to TcpTransport::create will fail.

To listen for incoming connections use tcp.listen().

To register additional connections on an already initialised TcpTransport, use tcp.connect(). This step is optional because the underlying TcpRouter is capable of lazily establishing a connection upon arrival of an initial message.

use ockam_transport_tcp::TcpTransport;
let tcp = TcpTransport::create(&ctx).await?;
tcp.listen("127.0.0.1:8000").await?; // Listen on port 8000
tcp.connect("127.0.0.1:5000").await?; // And connect to port 5000

The same TcpTransport can also bind to multiple ports.

use ockam_transport_tcp::TcpTransport;
let tcp = TcpTransport::create(&ctx).await?;
tcp.listen("127.0.0.1:8000").await?; // Listen on port 8000
tcp.listen("127.0.0.1:9000").await?; // Listen on port 9000

Implementations

Create a new TCP transport and router for the current node

use ockam_transport_tcp::TcpTransport;
let tcp = TcpTransport::create(&ctx).await?;

Manually establish an outgoing TCP connection on an existing transport. This step is optional because the underlying TcpRouter is capable of lazily establishing a connection upon arrival of the initial message.

use ockam_transport_tcp::TcpTransport;
let tcp = TcpTransport::create(&ctx).await?;
tcp.listen("127.0.0.1:8000").await?; // Listen on port 8000
tcp.connect("127.0.0.1:5000").await?; // and connect to port 5000

Disconnect from peer

Start listening to incoming connections on an existing transport

Returns the local address that this transport is bound to.

This can be useful, for example, when binding to port 0 to figure out which port was actually bound.

use ockam_transport_tcp::TcpTransport;
let tcp = TcpTransport::create(&ctx).await?;
tcp.listen("127.0.0.1:8000").await?;

Create Tcp Inlet that listens on bind_addr, transforms Tcp stream into Ockam Routable Messages and forward them to Outlet using outlet_route. Inlet is bidirectional: Ockam Messages sent to Inlet from Outlet (using return route) will be streamed to Tcp connection. Pair of corresponding Inlet and Outlet is called Portal.

use ockam_transport_tcp::{TcpTransport, TCP};
let hop_addr = "INTERMEDIARY_HOP:8000";
let route_path = route![(TCP, hop_addr), "outlet"];

let tcp = TcpTransport::create(&ctx).await?;
tcp.create_inlet("inlet", route_path).await?;

Stop inlet at addr

use ockam_transport_tcp::{TcpTransport, TCP};
let hop_addr = "INTERMEDIARY_HOP:8000";
let route = route![(TCP, hop_addr), "outlet"];

let tcp = TcpTransport::create(&ctx).await?;
tcp.create_inlet("inlet", route).await?;
tcp.stop_inlet("inlet").await?;

Create Tcp Outlet Listener at address, that connects to peer using Tcp, transforms Ockam Messages received from Inlet into stream and sends it to peer Tcp stream. Outlet is bidirectional: Tcp stream received from peer is transformed into Ockam Routable Messages and sent to Inlet using return route. Pair of corresponding Inlet and Outlet is called Portal.

use ockam_transport_tcp::TcpTransport;

let tcp = TcpTransport::create(&ctx).await?;
tcp.create_outlet("outlet", "localhost:9000").await?;

FIXME

Stop outlet at addr

use ockam_transport_tcp::TcpTransport;
const TARGET_PEER: &str = "127.0.0.1:5000";

let tcp = TcpTransport::create(&ctx).await?;
tcp.create_outlet("outlet", TARGET_PEER).await?;
tcp.stop_outlet("outlet").await?;

Trait Implementations

Try cloning a object and return an Err in case of failure.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more