Struct varlink::Connection
source · pub struct Connection {
pub reader: Option<BufReader<Box<dyn Read + Send + Sync>>>,
pub writer: Option<Box<dyn Write + Send + Sync>>,
/* 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>>
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](https: //github.com/varlink/documentation/wiki#address).
Currently supported address URIs are:
- TCP
tcp:127.0.0.1:12345
hostname/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");
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");
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");
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 *