diff options
author | Jakob Odersky <jodersky@gmail.com> | 2015-09-09 13:35:10 +0200 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2015-09-12 22:37:15 +0200 |
commit | 66ebda90a80f7429ca34b6cce2826a6b132d77f0 (patch) | |
tree | 8078bee5ab17e255f7c3e214ae11904a9b0ff2aa /Documentation/watching.md | |
parent | 9b25ed521ad6ae7c54b83e47175b5589dae255cd (diff) | |
download | akka-serial-66ebda90a80f7429ca34b6cce2826a6b132d77f0.tar.gz akka-serial-66ebda90a80f7429ca34b6cce2826a6b132d77f0.tar.bz2 akka-serial-66ebda90a80f7429ca34b6cce2826a6b132d77f0.zip |
update documentation
Diffstat (limited to 'Documentation/watching.md')
-rw-r--r-- | Documentation/watching.md | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/Documentation/watching.md b/Documentation/watching.md index 8735a46..3abf071 100644 --- a/Documentation/watching.md +++ b/Documentation/watching.md @@ -1,47 +1,45 @@ # Watching Ports -As of version 2.2.0, flow can watch directories for new files. On most unix systems this can be used for watching for new serial ports in `/dev`. +As of version 2.2.0, flow can watch directories for new files. On most unix systems this can be used for watching for new serial ports in `/dev/`. Watching happens through a message-based, publish-subscribe protocol as explained in the sections below. -## Subscribe -A client actor may watch, i.e subscribe to notifications on, a directory by sending a `Watch` command to the serial manager. +## Subscribing +A client actor may watch -- i.e subscribe to notifications on -- a directory by sending a `Watch` command to the serial manager. Should an error be encountered whilst trying to obtain the watch, the manager will respond with a `CommandFailed` message. Otherwise, the client may be considered "subscribed" to the directory and the serial manager will thenceforth notify the client on new files. ```scala -IO(Serial) ! Watch(directory = "/dev", skipInitial = true) +IO(Serial) ! Serial.Watch("/dev/") def receive = { - case CommandFailed(w: Watch, reason) => + case Serial.CommandFailed(w: Watch, reason) => println(s"Cannot obtain a watch on ${w.directory}: ${reason.getMessage}") } ``` -Note the second argument `skipInitial` of the watch command. This flag specifies if the client should not be notified of files already present -during the manager's reception of the watch command. - ## Notifications Whilst subscribed to a directory, a client actor is informed of any new files in said directory by receiving `Connected` messages from the manager. ```scala def receive = { - case Connected(port) if port matches "/dev/ttyUSB.*" => + case Serial.Connected(port) if port matches "/dev/ttyUSB\\d+" => // do something with the available port, e.g. // IO(Serial) ! Open(port, settings) } ``` -## Unsubscribe -Unsubscribing from events on a directory happens by sending an `Unsubscribe` message to the serial manager. +## Unsubscribing +Unsubscribing from events on a directory is done by sending an `Unsubscribe` message to the serial manager. ```scala -IO(Serial) ! Unwatch(directory = "/dev") +IO(Serial) ! Unwatch("/dev/") ``` -Note that the manager has a deathwatch on every subscribed client. Hence should a client die, underlying resources will be freed. +## Resource Handling +Note that the manager has a deathwatch on every subscribed client. Hence, should a client die, any underlying resources will be freed. -# Requirements -Flow uses java's `WatchService`s under the hood, therefore a java runtime of at least 1.7 is required. +## Requirements +Flow uses Java's `WatchService`s under the hood, therefore a Java runtime of a version of at least 1.7 is required. |