|
#define | DS_AND(p1, p2, a) |
| Combine two peersets using bitwise and. More...
|
|
#define | DS_AND3_ISZERO(p1, p2, p3) |
| Test if the bitwise and of 3 peersets is 0. More...
|
|
#define | DS_AND_ISZERO(p1, p2) |
| Test if the bitwise and of 2 peersets is 0. More...
|
|
#define | DS_CACHE_DATASRC |
| Peer index of cache datasrc. More...
|
|
#define | DS_CLR(n, p) |
| Clears peer n in peerset p. More...
|
|
#define | DS_INTERNAL_DATASRC |
| Peer index of internal datasrc. More...
|
|
#define | DS_ISEQUAL(p1, p2) |
| Test if 2 peersets are equal. More...
|
|
#define | DS_ISSET(n, p) |
| Tests whether peer n in peerset p. More...
|
|
#define | DS_ISZERO(p) |
| Checks if all peers in peerset p are cleared. More...
|
|
#define | DS_MAX_PEERS |
| Maximum number of peers. More...
|
|
#define | DS_MIN_PEER |
| Minimum index for configured peer. More...
|
|
#define | DS_NONZERO(p) |
| Sets all peers in peerset p. More...
|
|
#define | DS_OR(p1, p2, o) |
| Combine two peersets using bitwise or. More...
|
|
#define | DS_SET(n, p) |
| Sets peer n in peerset p. More...
|
|
#define | DS_T_ACTIVE |
| Defines the active source peer type, which can accept requests for objects. This flag could be set on the DataSource initialisation object ds_init_t or set in the add-peer sections of a configuration file. More...
|
|
#define | DS_T_CONTRIB |
| Defines the contribution peer type. This source should automatically receive data updates for objects that it has updated itself. This flag could be set on the DataSource initialisation object ds_init_t or set in the add-peer sections of a configuration file. More...
|
|
#define | DS_ZERO(p) |
| Unsets all peers in peerset p. More...
|
|
#define | F_NOCONNECT |
| Suppresses the automatic connection to DataSource peers on startup. The connection can then be made later using ds_set_status_up(). More...
|
|
#define | F_RECVAUTOREPLAY |
| Defines the Receive Auto Replay peer flag (indicating that, when restarting, this peer should accept replay updates). More...
|
|
#define | F_SENDFROMSEQ |
| Defines the Send From Sequence peer flag (indicating that, when reconnecting, missed packets should be requested based on the last sequence number). More...
|
|
|
typedef struct _ds_peer_set | ds_set_t |
| Defines a set of DataSource peers. More...
|
|
- What Is A DataSource Peer?
As well as being a source of data, DataSource can act as a destination for data sent from other DataSource applications, as illustrated in the diagram below:
DataSource acting as data source and a data sink
A DataSource peer is another DataSource installed remotely, which your DataSource can receive data from and send to.
As this means the link between DataSources is bidirectional, the true relationship between DataSources is shown in Figure 6.2 below.
Bidirectional links between DataSources
Objects can be requested from individual DataSource peers or groups of peers. This can be configured using the add-source-mapping
configuration option.
- What is an active DataSource?
An active DataSource is one that will accept requests for objects. The opposite of this is a broadcast DataSource, which simply sends all objects and updates to its peers.
It is an active DataSource's responsibility to keep track of which objects have been requested and send updates for those objects only.
Objects may be discarded as well as requested. This tells the source that we no longer wish to receive updates for this object.
When a user requests an object, and Caplin Liberator does not already have it, it will request it from one or more of its active sources. If another user requests that object Caplin Liberator will already have all the information it needs, and will respond to the user immediately.
When a user logs out or discards an object, Caplin Liberator will send a discard message to the active DataSource (as long as no other user is viewing that object). This discard will actually take place one minute after the user discarded the object; this prevents objects being requested and discarded from the source unnecessarily.
- Making DataSource applications active
For a DataSource to receive requests from a DataSource peer or Caplin Liberator, the type member of the initialisation object ds_init_t must be set to DS_T_ACTIVE.
#define DS_AND |
( |
|
p1, |
|
|
|
p2, |
|
|
|
a |
|
) |
| |
Combine two peersets using bitwise and.
#define DS_AND3_ISZERO |
( |
|
p1, |
|
|
|
p2, |
|
|
|
p3 |
|
) |
| |
Test if the bitwise and of 3 peersets is 0.
#define DS_AND_ISZERO |
( |
|
p1, |
|
|
|
p2 |
|
) |
| |
Test if the bitwise and of 2 peersets is 0.
Peer index of cache datasrc.
Clears peer n in peerset p.
#define DS_INTERNAL_DATASRC |
Peer index of internal datasrc.
#define DS_ISEQUAL |
( |
|
p1, |
|
|
|
p2 |
|
) |
| |
Test if 2 peersets are equal.
#define DS_ISSET |
( |
|
n, |
|
|
|
p |
|
) |
| |
Tests whether peer n in peerset p.
Checks if all peers in peerset p are cleared.
Minimum index for configured peer.
Sets all peers in peerset p.
#define DS_OR |
( |
|
p1, |
|
|
|
p2, |
|
|
|
o |
|
) |
| |
Combine two peersets using bitwise or.
Sets peer n in peerset p.
Defines the active source peer type, which can accept requests for objects. This flag could be set on the DataSource initialisation object ds_init_t or set in the add-peer
sections of a configuration file.
Defines the contribution peer type. This source should automatically receive data updates for objects that it has updated itself. This flag could be set on the DataSource initialisation object ds_init_t or set in the add-peer
sections of a configuration file.
Unsets all peers in peerset p.
Suppresses the automatic connection to DataSource peers on startup. The connection can then be made later using ds_set_status_up().
This flag should be set on the DataSource initialisation object ds_init_t. It can also be set in the add-peer
sections of a configuration file rather than hardcoded for all peers, although hardcoding it is more likely as this is usually used when the application depends on making its own connections or other initialisation before DataSource connections are made.
Defines the Receive Auto Replay peer flag (indicating that, when restarting, this peer should accept replay updates).
The datasrc-auto-replay
option must be set in your configuration file for replay to occur. This flag could be set on the DataSource initialisation object ds_init_t, however it is more typically used in the add-peer
sections of a configuration file rather than hardcoded for all peers.
Defines the Send From Sequence peer flag (indicating that, when reconnecting, missed packets should be requested based on the last sequence number).
This flag could be set on the DataSource initialisation object ds_init_t or set in the add-peer
sections of a configuration file. It is set on the side that will receive the missed messages, as it instructs DataSource to send the last received sequence number to the peer, which will then flush any queued messages since that sequence number.
Defines a set of DataSource peers.
int ds_peer_all_type |
( |
int |
flag | ) |
|
Checks if a DataSource peer of the given type is in your configuration file.
- Parameters
-
flag | Peer flags to check for |
- Return values
-
1 | - A peer of that type is configured |
0 | - A peer of that type is not configured |
Type can be a combination DS_T_ACTIVE and DS_T_CONTRIB
int ds_peer_details |
( |
int |
peer, |
|
|
char ** |
name |
|
) |
| |
Gets the ID and name of a peer.
- Parameters
-
[in] | peer | The peer number |
[out] | name | Name of the peer |
- Returns
- The peer ID
- Note
- The peer number is not the DataSource ID specified by
datasrc-id
parameter in the configuration file, but corresponds to the order of the peer's add-peer
entries in the configuration file. The first add-peer
is for peer 0, the next peer 1 and so on.
int ds_peer_enabled_state |
( |
int |
peer | ) |
|
Gets the enabled/disabled state of a DataSource peer.
- Parameters
-
- Return values
-
0 | - The peer is disabled |
1 | - The peer is enabled |
The peer state can be adjusted by using ds_set_status_up() and ds_set_status_down()
int ds_peer_flags |
( |
int |
peer | ) |
|
Gets the flags of a peer.
- Parameters
-
- Returns
- The peer flags
- Note
- The peer number is not the DataSource ID specified by
datasrc-id
parameter in the configuration file, but corresponds to the order of the peer's add-peer
entries in the configuration file. The first add-peer
is for peer 0, the next peer 1 and so on.
The return value is defined by a logical or of F_SENDFROMSEQ F_RECVAUTOREPLAY.
int ds_peer_host_details |
( |
int |
peer, |
|
|
char ** |
addr |
|
) |
| |
Gets details of the remote side of a peer.
- Parameters
-
[in] | peer | The peer number |
[out] | addr | Remote hostname of the peer |
- Returns
- The port number
int ds_peer_id |
( |
int |
peer | ) |
|
Gets the ID of a peer.
- Parameters
-
- Returns
- The peer ID
- Note
- The peer number is not the DataSource ID specified by
datasrc-id
parameter in the configuration file, but corresponds to the order of the peer's add-peer
entries in the configuration file. The first add-peer
is for peer 0, the next peer 1 and so on.
int ds_peer_local_type |
( |
int |
peer | ) |
|
Gets the local type of a DataSource peer.
- Parameters
-
- Returns
- The peer type
- Note
- The peer number is not the DataSource ID specified by
datasrc-id
parameter in the configuration file, but corresponds to the order of the peer's add-peer
entries in the configuration file. The first add-peer
is for peer 0, the next peer 1 and so on.
char* ds_peer_name |
( |
int |
peer | ) |
|
Gets the name of a peer.
- Parameters
-
- Returns
- The peer name
- Note
- The peer number is not the DataSource ID specified by
datasrc-id
parameter in the configuration file, but corresponds to the order of the peer's add-peer
entries in the configuration file. The first add-peer
is for peer 0, the next peer 1 and so on.
int ds_peer_type |
( |
int |
peer | ) |
|
Gets the type of a DataSource peer.
- Parameters
-
- Returns
- The peer type
- Note
- The peer number is not the DataSource ID specified by
datasrc-id
parameter in the configuration file, but corresponds to the order of the peer's add-peer
entries in the configuration file. The first add-peer
is for peer 0, the next peer 1 and so on.
int ds_peer_up |
( |
int |
peer | ) |
|
Check to see if a peer is up.
- Parameters
-
- Return values
-
- Returns
- 0 - the peer is not connected
- Note
- The peer number is not the DataSource ID specified by
datasrc-id
parameter in the configuration file, but corresponds to the order of the peer's add-peer
entries in the configuration file. The first add-peer
is for peer 0, the next peer 1 and so on.
void ds_set_status_down |
( |
| ) |
|
Causes the DataSource to disconnect and stop listening for connections.
void ds_set_status_down_to_peer |
( |
int |
peer | ) |
|
Causes the DataSource to disconnect and not accept connections for this peer.
- Parameters
-
void ds_set_status_msg |
( |
unsigned short |
msgid, |
|
|
const char * |
msgstr |
|
) |
| |
Send a user-defined status message to all connected peers.
- Parameters
-
msgid | User-definable status code |
msgstr | User-definable status message |
void ds_set_status_msg_to_peer |
( |
int |
peer, |
|
|
unsigned short |
msgid, |
|
|
const char * |
msgstr |
|
) |
| |
Send a user-defined status message to peer.
- Parameters
-
peer | Peer number to send the status message to |
msgid | User-definable status code |
msgstr | User-definable status message |
void ds_set_status_up |
( |
| ) |
|
Causes the DataSource to connect and listen for connections.
void ds_set_status_up_to_peer |
( |
int |
peer | ) |
|
Causes the DataSource to connect and accept connections.
The number of DataSource peers in your configuration.