36 #define A_SIZEOF(a) (sizeof(a) / sizeof((a)[0])) 44 #define DPS_MCAST_PUB_DISABLED 0 45 #define DPS_MCAST_PUB_ENABLE_SEND 1 46 #define DPS_MCAST_PUB_ENABLE_RECV 2 int DPS_PublicationIsAckRequested(const DPS_Publication *pub)
Check if an acknowledgement was requested for a publication.
Type definition for a UUID.
Definition: uuid.h:36
DPS_Publication * DPS_CopyPublication(const DPS_Publication *pub)
Creates a partial copy of a publication that can be used to acknowledge the publication.
void * DPS_GetNodeData(const DPS_Node *node)
Get application data pointer previously set by DPS_SetNodeData()
void DPS_DestroyMemoryKeyStore(DPS_MemoryKeyStore *mks)
void(* DPS_OnLinkComplete)(DPS_Node *node, DPS_NodeAddress *addr, DPS_Status status, void *data)
Function prototype for function called when a DPS_Link() completes.
Definition: dps.h:449
void(* DPS_OnUnlinkComplete)(DPS_Node *node, DPS_NodeAddress *addr, void *data)
Function prototype for function called when a DPS_Unlink() completes.
Definition: dps.h:470
DPS_Node * DPS_SubscriptionGetNode(const DPS_Subscription *sub)
Get the local node associated with a subscription.
DPS_Status DPS_SetNodeData(DPS_Node *node, void *data)
Store a pointer to application data in a node.
DPS_Status DPS_StartNode(DPS_Node *node, int mcastPub, int listenPort)
Initialized and starts running a local node.
DPS_Status DPS_DestroyPublication(DPS_Publication *pub)
Delete a publication and frees any resources allocated.
uint16_t DPS_GetPortNumber(DPS_Node *node)
Get the port number this node is listening for connections on.
void(* DPS_OnResolveAddressComplete)(DPS_Node *node, DPS_NodeAddress *addr, void *data)
Function prototype for function called when a DPS_ResolveAddress() completes.
Definition: dps.h:498
DPS_NodeAddress * DPS_SetAddress(DPS_NodeAddress *addr, const struct sockaddr *sa)
Set a node address.
DPS_Publication * DPS_CreatePublication(DPS_Node *node)
Allocates storage for a publication.
DPS_Status DPS_ResolveAddress(DPS_Node *node, const char *host, const char *service, DPS_OnResolveAddressComplete cb, void *data)
Resolve a host name or IP address and service name or port number.
void DPS_DestroyAddress(DPS_NodeAddress *addr)
Frees resources associated with an address.
void * userData
Definition: dps.h:155
int DPS_Status
Definition: err.h:30
DPS_MemoryKeyStore * DPS_CreateMemoryKeyStore()
size_t DPS_PublicationGetNumTopics(const DPS_Publication *pub)
Get the number of topics in a publication.
void * DPS_GetPublicationData(const DPS_Publication *pub)
Get application data pointer previously set by DPS_SetPublicationData()
size_t DPS_SubscriptionGetNumTopics(const DPS_Subscription *sub)
Get the number of topics registered with an active subscription.
DPS_Node * DPS_CreateNode(const char *separators, DPS_KeyStore *keyStore, const DPS_UUID *keyId)
Allocates space for a local DPS node.
void(* DPS_OnNodeDestroyed)(DPS_Node *node, void *data)
Function prototype for callback function called when a node is destroyed.
Definition: dps.h:217
uint32_t DPS_Rand()
Returns a non-secure random number.
void * DPS_GetSubscriptionData(DPS_Subscription *sub)
Get application data pointer previously set by DPS_SetSubscriptionData()
struct _DPS_NodeAddress DPS_NodeAddress
Opaque type for a remote node address.
Definition: dps.h:57
DPS_Status DPS_Link(DPS_Node *node, DPS_NodeAddress *addr, DPS_OnLinkComplete cb, void *data)
Link the local node to a remote node.
const DPS_UUID * DPS_PublicationGetUUID(const DPS_Publication *pub)
Get the UUID for a publication.
DPS_Status DPS_SetSubscriptionData(DPS_Subscription *sub, void *data)
Store a pointer to application data in a subscription.
DPS_Status DPS_SetContentKey(DPS_MemoryKeyStore *mks, const DPS_UUID *kid, uint8_t *key, size_t keyLen)
DPS_Status DPS_DestroySubscription(DPS_Subscription *sub)
Stop subscribing to the subscription topic and free resources allocated for the subscription.
DPS_Status DPS_DestroyNode(DPS_Node *node, DPS_OnNodeDestroyed cb, void *data)
Destroys a node and free any resources.
uint32_t DPS_PublicationGetSequenceNum(const DPS_Publication *pub)
Get the sequence number for a publication.
DPS_Node * DPS_GetPublicationNode(const DPS_Publication *pub)
Get the local node associated with a publication.
struct _DPS_Publication DPS_Publication
Opaque type for a publication.
Definition: dps.h:82
DPS_NetworkKeyCallback networkKeyCB
Definition: dps.h:157
DPS_Status(* DPS_ContentKeyCallback)(DPS_KeyStore *keyStore, const DPS_UUID *kid, uint8_t *key, size_t keyLen)
Function prototype for callback function for requesting the encryption key for a specific key identif...
Definition: dps.h:149
const char * DPS_PublicationGetTopic(const DPS_Publication *pub, size_t index)
Get a topic for a publication.
uv_loop_t * DPS_GetLoop(DPS_Node *node)
Get the uv event loop for this node.
DPS_Status DPS_AckPublication(const DPS_Publication *pub, const uint8_t *ackPayload, size_t len)
Aknowledge a publication.
DPS_Status DPS_SetNetworkKey(DPS_MemoryKeyStore *mks, uint8_t *key, size_t keyLen)
DPS_Node * DPS_PublicationGetNode(const DPS_Publication *pub)
Get the local node associated with a publication.
DPS_KeyStore * DPS_MemoryKeyStoreHandle(DPS_MemoryKeyStore *mks)
DPS_Status DPS_Unlink(DPS_Node *node, DPS_NodeAddress *addr, DPS_OnUnlinkComplete cb, void *data)
Unlink the local node from a remote node.
DPS_NodeAddress * DPS_CreateAddress()
Creates an node address.
DPS_Status DPS_SetPublicationData(DPS_Publication *pub, void *data)
Store a pointer to application data in a publication.
DPS_Status DPS_Subscribe(DPS_Subscription *sub, DPS_PublicationHandler handler)
Start subscribing to a set of topics.
struct _DPS_Node DPS_Node
Opaque type for a node.
Definition: dps.h:52
void(* DPS_PublicationHandler)(DPS_Subscription *sub, const DPS_Publication *pub, uint8_t *payload, size_t len)
Function prototype for a publication handler called when a publication is received that matches a sub...
Definition: dps.h:363
void DPS_CopyAddress(DPS_NodeAddress *dest, const DPS_NodeAddress *src)
Copy a node address.
DPS_ContentKeyCallback contentKeyCB
Definition: dps.h:156
const char * DPS_NodeAddrToString(DPS_NodeAddress *addr)
Get text representation of an address.
DPS_Status(* DPS_NetworkKeyCallback)(DPS_KeyStore *keyStore, uint8_t *buffer, size_t bufferLen, size_t *keyLen)
Definition: dps.h:151
struct _DPS_Subscription DPS_Subscription
Opaque type for a subscription.
Definition: dps.h:62
DPS_Status DPS_Publish(DPS_Publication *pub, const uint8_t *pubPayload, size_t len, int16_t ttl)
Publish a set of topics along with an optional payload.
DPS_Status DPS_InitPublication(DPS_Publication *pub, const char **topics, size_t numTopics, int noWildCard, const DPS_UUID *keyId, DPS_AcknowledgementHandler handler)
Initializes a newly created publication with a set of topics.
void(* DPS_AcknowledgementHandler)(DPS_Publication *pub, uint8_t *payload, size_t len)
Function prototype for a publication acknowledgment handler called when an acknowledgement for a publ...
Definition: dps.h:251
const char * DPS_SubscriptionGetTopic(const DPS_Subscription *sub, size_t index)
Get a topic for an active subscription.
DPS_Subscription * DPS_CreateSubscription(DPS_Node *node, const char **topics, size_t numTopics)
Allocate memory for a subscription and initialize topics.
struct _DPS_MemoryKeyStore DPS_MemoryKeyStore
Definition: dps.h:160