pub struct Connection {
pub reader: Option<BufReader<Box<dyn Read + Send + Sync>>>,
pub writer: Option<Box<dyn Write + Send + Sync>>,
pub stream: Option<Box<dyn Stream>>,
pub child: Option<Child>,
pub tempdir: Option<TempDir>,
/* private fields */
}Expand description
A client connection builder to a varlink service.
Fields§
§reader: Option<BufReader<Box<dyn Read + Send + Sync>>>§writer: Option<Box<dyn Write + Send + Sync>>§stream: Option<Box<dyn Stream>>§child: Option<Child>§tempdir: Option<TempDir>Implementations§
Source§impl Connection
impl Connection
Sourcepub fn new<S: ?Sized + AsRef<str>>(address: &S) -> Result<Arc<RwLock<Self>>>
pub fn new<S: ?Sized + AsRef<str>>(address: &S) -> Result<Arc<RwLock<Self>>>
Create a connection with a varlink URI
see with_address
Sourcepub fn with_address<S: ?Sized + AsRef<str>>(
address: &S,
) -> Result<Arc<RwLock<Self>>>
pub fn with_address<S: ?Sized + AsRef<str>>( address: &S, ) -> Result<Arc<RwLock<Self>>>
Create a connection with a varlink URI
following the varlink address specification.
Currently supported address URIs are:
- TCP
tcp:127.0.0.1:12345hostname/IP address and port - UNIX socket
unix:/run/org.example.ftl - UNIX abstract namespace socket
unix:@org.example.ftl(on Linux only)
§Examples
let connection = Connection::with_address("unix:/tmp/org.example.myservice");
let connection = Connection::with_address("tcp:127.0.0.1:12345");pub fn with_address_no_rw<S: ?Sized + AsRef<str>>( address: &S, ) -> Result<Arc<RwLock<Self>>>
Sourcepub fn with_activate<S: ?Sized + AsRef<str>>(
command: &S,
) -> Result<Arc<RwLock<Self>>>
pub fn with_activate<S: ?Sized + AsRef<str>>( command: &S, ) -> Result<Arc<RwLock<Self>>>
Create a connection to a service, which is executed in the background.
Create a connection to a service, which is started with command and passed a socket pair
via socket activation. The address of the unix socket is set in the environment variable
VARLINK_ADDRESS. Additionally the socket activation variables LISTEN_FDS=1,
LISTEN_FDNAMES=varlink and LISTEN_PID are set.
§Examples
let connection = Connection::with_activate("myservice --varlink=$VARLINK_ADDRESS");pub fn with_activate_no_rw<S: ?Sized + AsRef<str>>( command: &S, ) -> Result<Arc<RwLock<Self>>>
Sourcepub fn with_bridge<S: ?Sized + AsRef<str>>(
command: &S,
) -> Result<Arc<RwLock<Self>>>
pub fn with_bridge<S: ?Sized + AsRef<str>>( command: &S, ) -> Result<Arc<RwLock<Self>>>
Create a connection to a service via stdin/stdout of a specified command.
Create a “bridge” to e.g. another host via ssh or other connection commands.
On the remote side varlink bridge is typically started.
The connection will go through stdin/stdout of the command and the remote bridge command
will multiplex to the wanted varlink services.
Of course with ssh there are better options, like unix socket
forwarding -L local_socket:remote_socket.
§Examples
let connection = Connection::with_bridge("ssh my.example.org -- varlink bridge");pub fn with_bridge_no_rw<S: ?Sized + AsRef<str>>( command: &S, ) -> Result<Arc<RwLock<Self>>>
Sourcepub fn address(&self) -> String
pub fn address(&self) -> String
Return the address used by the connection.
Only useful, if you want to clone a connection built with_activate or with_address