xpipe/beacon
2022-07-03 20:41:42 +02:00
..
src/main/java Add validators, rework machine stores 2022-07-03 20:41:42 +02:00
build.gradle Release fixes 2022-06-18 01:17:08 +02:00
publish.gradle Cleanup, some documentation, and refactoring 2022-03-08 23:30:13 +01:00
README.md Large refactor 2022-06-18 00:29:41 +02:00

Maven Central javadoc Build Status

X-Pipe Beacon

The X-Pipe beacon component is responsible for handling all communications between the X-Pipe daemon and the various programming language APIs and the CLI. It provides an API that supports all kinds of different operations. The underlying inter-process communication is realized through TCP sockets on default port 21721.

The data structures and exchange protocols are specified in the io.xpipe.beacon.exchange package. Every exchange is initiated from the outside by sending a request message to the X-Pipe daemon. The daemon then always sends a response message.

The header information of a message is formatted in the json format. As a result, all data structures exchanged must be serializable/deserializable with jackson.

Both the requests and responses can optionally include content in a body. A body is initiated with two new lines (\n). The body is split into segments of max length 65536. Each segment is preceded by four bytes that specify the length of the next segment. In case the next segment has a length of less than 65536 bytes, we know that the end of the body has been reached. This way the socket communication can handle payloads of unknown length.

Configuration

The default port used by the beacon implementation of the X-Pipe daemon and APIs is 21721. It can be changed by passing the property io.xpipe.beacon.port=<port> to both the daemon and APIs.

The beacon API also supports launching the daemon automatically in case it is not started yet. By default, it launches the daemon of the local X-Pipe installation. It is possible to pass a custom launch command with the property io.xpipe.beacon.exec=<cmd>. This allows for a custom launch behaviour in a testing/development environment. Note that the <cmd> value has to be a single property string, which can be prone to formatting errors

By passing the property io.xpipe.beacon.debugOutput=true, it is possible to print debug information about the underlying communications. In case the io.xpipe.beacon.exec property is set, the output of the custom exec command can also be printed by passing the property io.xpipe.beacon.debugExecOutput=true.