See: Description
| Interface | Description |
|---|---|
| ConnectionManager.ClientTask<T> |
An interface for all the kinds of activities that need a connection to the dbserver, so we can keep track
of how many sessions are in effect, clean up after them, and know when the client is idle and can be closed.
|
| Class | Description |
|---|---|
| BinaryField |
A binary field holds an arbitrary sequence of bytes whose length is determined by the 4-byte big-endian
integer that follows the type tag.
|
| Client |
Manages a connection to the dbserver port on a particular player, allowing queries to be sent, and their
responses to be interpreted.
|
| ConnectionManager |
Manges connections to dbserver ports on the players, offering sessions that can be used to perform transactions,
and allowing the connections to close when there are no active sessions.
|
| Field |
All dbserver messages are made up of lists of fields, which are type-tagged values.
|
| Message |
Encapsulates a full dbserver message, made up of a list of
Field objects,
and having a particular structure, as described in the
Packet Analysis paper. |
| NumberField |
A number field represents an integer, and can take up 1, 2, or 4 bytes, depending on the tag which
introduces it.
|
| StringField |
A string field holds a UTF8-BE encoded string whose length is determined by the 4-byte big-endian
integer that follows the type tag.
|
| Enum | Description |
|---|---|
| Message.KnownType |
Defines all the message types we know about, with any information we know about their arguments.
|
| Message.MenuIdentifier |
For many types of query messages, the first argument of the message is a 4-byte integer which we currently
refer to as r:m:s:1, because the first byte is the player number of the player making the
request, the second byte identifies the menu or destination for which information is being
loaded, the third byte identifies the media slot (USB or SD) being asked about (as described in
CdjStatus.TrackSourceSlot), and the fourth byte
always seems to be 1 (Austin's libpdjl called it sourceAnalyzed). |
| Message.MenuItemType |
Provides an interface to the database servers running on Pioneer players.
The ConnectionManager knows how to locate the database servers running
on the players, and once started, can establish and share connections to them using the
ConnectionManager.invokeWithClientSession(int, org.deepsymmetry.beatlink.dbserver.ConnectionManager.ClientTask, java.lang.String)
method.
Requests and responses to and from the database servers are structured as messages, encapsulated by the
Message class, and these are made up of fields, encapsulated by
subclasses of Field. The known message types are found in
Message.KnownType
This project is based on research performed with dysentery, and the packet analysis resulting from that project (also available as downloadable PDF).
Copyright © 2016–2018 Deep Symmetry, LLC. All rights reserved.