aboutsummaryrefslogtreecommitdiff
path: root/Documentation/watching.md
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/watching.md')
-rw-r--r--Documentation/watching.md28
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.