Rivendell Notification Protocol
Fred
Gleason
fredg@paravelsystems.com
Overview
This document defines the IP protocol used by Rivendell for real-time
communication between different modules and/or hosts. Messages are sent
by means of multicast UDP packets to port 20539. The IPv4 multicast group
address used is defined the in the SYSTEM.NOTIFICATION_ADDRESS database
field.
Update messages are textual, with individual fields delimited by
the ASCII SPACE character. They are formatted as follows:
keyword
arg1
arg2
[...]
where keyword defines the class of message.
The following classes are defined:
Notifications
Signals a change to a Rivendell database object.
Catch Events
RDCatch state changes.
Notification Messages
Notification messages use the following format:
NOTIFY type
action
id
type
The database object type to which the message pertains.
action
The action being reported. The following actions are defined:
ADD
The referenced object has just been added to the database.
DELETE
The referenced object has just been deleted from the database.
MODIFY
The reference object has just been modified in the database.
id
Unique id of the object.
The following database object types are defined:
Carts
Cart Fields
Field
Value
Database Field
CART.NUMBER
Type
CART
Id Data Type
Unsigned Integer
RDNotification::Type Value
RDNotification::CartType [1]
Logs
Log Fields
Field
Value
Database Field
LOGS.NAME
Type
LOG
Id Data Type
String
RDNotification::Type Value
RDNotification::LogType [2]
Pypad Instances
Pypad Instance Fields
Field
Value
Database Field
PYPAD_INSTANCES.ID
Type
PYPAD
Id Data Type
Integer
RDNotification::Type Value
RDNotification::PypadType [3]
Dropbox Instances
Dropbox Instance Fields
Field
Value
Database Field
STATIONS.NAME
Type
DROPBOX
Id Data Type
String
RDNotification::Type Value
RDNotification::DropboxType [4]
Dropbox Add/Modify/Delete actions operate at a 'per-host' granularity
--i.e. any notification will cause
all dropboxes on the target host to be killed
and then restarted.
RDCatch Event Instances
RDCatch Event Fields
Field
Value
Database Field
RECORDINGS.ID
Type
CATCH_EVENT
Id Data Type
Integer
RDNotification::Type Value
RDNotification::CatchEventType [5]
RSS Feed Items
RSS Feed Item Fields
Field
Value
Database Field
PODCASTS.ID
Type
FEED_ITEM
Id Data Type
Unsigned Integer
RDNotification::Type Value
RDNotification::FeedItemType [6]
RSS Feeds
RSS Feed Fields
Field
Value
Database Field
FEEDS.KEY_NAME
Type
FEED
Id Data Type
String
RDNotification::Type Value
RDNotification::FeedType [7]
RDCatch Messages
RDCatch messages use the following format:
CATCH orig-hostname
operation
arg1
[...]
orig-hostname
The name of the host originating the message. From STATIONS.NAME.
operation
The RDCatch operation. See the list below.
Deck Event Processed Operation
Emitted by rdcatchd8 every
time a 'Cut Event' ['CE'] RML is processed.
RDCatch Event Fields
Field
Offset
Value
Keyword
0
CATCH
Originating Hostname
1
String, from STATIONS.NAME
Operation
2
Integer. 1 [RDCatchEvent::DeckEventProcessedOp]
Deck Channel
3
Integer. Record decks have values in the range 1-127,
while play decks have values in the range 128-254.
Event Number
4
Integer. The value of CUT_EVENTS.NUMBER.
Deck Status Operation
Emitted by rdcatch1 at
startup to request the current status of all decks.
RDCatch Event Request Fields
Field
Offset
Value
Keyword
0
CATCH
Originating Hostname
1
String, from STATIONS.NAME
Operation
2
Integer. 2 [RDCatchEvent::DeckStatusQueryOp]
Emitted by rdcatchd8 whenever
the status of a deck changes, or as a set in response to a request.
(See ).
RDCatch Event Response Fields
Field
Offset
Value
Keyword
0
CATCH
Originating Hostname
1
String, from STATIONS.NAME
Operation
2
Integer. 3 [RDCatchEvent::DeckStatusResponseOp]
Deck Channel
3
Integer. Record decks have values in the range 1-127,
while play decks have values in the range 128-254.
Status
4
Integer. Current status of the specified deck. See
for code point values.
Event ID
5
Unsigned Integer, from RECORDINGS.ID or 0 if deck is inactive.
Cart Number
6
Unsigned Integer, from CART.NUMBER or 0 if deck status is not
3 [Active].
Cut Number
7
Integer, from cut part of CUTS.CUTNAME or 0 if deck status is
not 3 [Active].
Deck Status Codes
Deck Status Codes
Code
Meaning
RDDeck::Status Value
0
Offline
RDDeck::Offline
1
Idle
RDDeck::Idle
2
Ready
RDDeck::Ready
3
Active (playing or recording)
RDDeck::Recording
4
Waiting (for a GPI)
RDDeck::Waiting
Reload Decks Operation
Emitted by rdadmin1 to
trigger a reload of the record and play-out deck parameters.
RDCatch Reload Decks Fields
Field
Offset
Value
Keyword
0
CATCH
Originating Hostname
1
String, from STATIONS.NAME
Operation
2
Integer. 7 [RDCatchEvent::ReloadDecksOp]
Target Hostname
3
String, from STATIONS.NAME
Send Meter Levels Operation
Emitted by rdcatchd8 to
update audio meter levels for active record and play-out decks.
RDCatch Send Meter Levels Fields
Field
Offset
Value
Keyword
0
CATCH
Originating Hostname
1
String, from STATIONS.NAME
Operation
2
Integer. 8 [RDCatchEvent::SendMeterLevelsOp]
Meter Entry
3
String, chan:left-lvl:right-lvl
Set Input Monitor
Emitted by rdcatch1 to
turn a deck input monitor on or off.
RDCatch Set Input Monitor Fields
Field
Offset
Value
Keyword
0
CATCH
Originating Hostname
1
String, from STATIONS.NAME
Operation
2
Integer. 5 [RDCatchEvent::SetInputMonitorOp]
Target Hostname
3
String, from STATIONS.NAME
Deck Channel
4
Integer. Record decks have values in the range 1-127,
while play decks have values in the range 128-254.
State
5
Boolean. 0=False, 1=True.
Set Input Monitor Response
Emitted by rdcatchd8 to
signal change of a deck input monitor.
RDCatch Set Input Monitor Fields
Field
Offset
Value
Keyword
0
CATCH
Originating Hostname
1
String, from STATIONS.NAME
Operation
2
Integer. 6 [RDCatchEvent::SetInputMonitorResponseOp]
Deck Channel
3
Integer. Record decks have values in the range 1-127,
while play decks have values in the range 128-254.
State
4
Boolean. 0=False, 1=True.
Stop Deck Operation
Emitted by rdcatch1 to
abort a Record or Play-out event.
RDCatch Stop Deck Fields
Field
Offset
Value
Keyword
0
CATCH
Originating Hostname
1
String, from STATIONS.NAME
Operation
2
Integer. 4 [RDCatchEvent::StopDeckOp]
Target Hostname
3
String, from STATIONS.NAME
Deck Channel
4
Integer. Record decks have values in the range 1-127,
while play decks have values in the range 128-254.