Distributed Publish Subscribe for IoT
registration.h
Go to the documentation of this file.
1 /*
2  *******************************************************************
3  *
4  * Copyright 2016 Intel Corporation All rights reserved.
5  *
6  *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21  */
22 
23 #ifndef _DPS_REGISTRATION_H
24 #define _DPS_REGISTRATION_H
25 
26 #include <dps/dps.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
36 extern const char* DPS_RegistryTopicString;
37 
38 #define DPS_CANDIDATE_TRYING 0x01
39 #define DPS_CANDIDATE_FAILED 0x02
40 #define DPS_CANDIDATE_LINKED 0x04
41 #define DPS_CANDIDATE_UNLINKED 0x08
42 #define DPS_CANDIDATE_INVALID 0x10
47 typedef struct _DPS_Registration {
48  uint8_t flags;
49  uint16_t port;
50  char* host;
52 
56 typedef struct _DPS_RegistrationList {
57  uint8_t size; /* Size of the list */
58  uint8_t count; /* number of entries currently in the list */
61 
66 
71 
81 typedef void (*DPS_OnRegPutComplete)(DPS_Status status, void* data);
82 
97 DPS_Status DPS_Registration_Put(DPS_Node* node, const char* host, uint16_t port, const char* tenantString, DPS_OnRegPutComplete cb, void* data);
98 
110 DPS_Status DPS_Registration_PutSyn(DPS_Node* node, const char* host, uint16_t port, const char* tenantString);
111 
119 typedef void (*DPS_OnRegGetComplete)(DPS_RegistrationList* regs, DPS_Status status, void* data);
120 
138 DPS_Status DPS_Registration_Get(DPS_Node* node, const char* host, uint16_t port, const char* tenantString, DPS_RegistrationList* regs, DPS_OnRegGetComplete cb, void* data);
139 
152 DPS_Status DPS_Registration_GetSyn(DPS_Node* node, const char* host, uint16_t port, const char* tenantString, DPS_RegistrationList* regs);
153 
166 typedef void (*DPS_OnRegLinkToComplete)(DPS_Node* node, DPS_RegistrationList* regs, DPS_NodeAddress* addr, DPS_Status status, void* data);
167 
182 
196 
197 #ifdef __cplusplus
198 }
199 #endif
200 
201 #endif
struct _DPS_Registration DPS_Registration
Registration entry.
const char * DPS_RegistryTopicString
APIs for interacting with a registration service.
uint8_t flags
Definition: registration.h:48
DPS_Registration list[1]
Definition: registration.h:59
DPS_Status DPS_Registration_PutSyn(DPS_Node *node, const char *host, uint16_t port, const char *tenantString)
Synchronous version of DPS_RegistrationPut().
char * host
Definition: registration.h:50
void DPS_DestroyRegistrationList(DPS_RegistrationList *regs)
Destroy a regisration list and free resources.
int DPS_Status
Definition: err.h:30
uint16_t port
Definition: registration.h:49
struct _DPS_NodeAddress DPS_NodeAddress
Opaque type for a remote node address.
Definition: dps.h:57
DPS_Status DPS_Registration_Get(DPS_Node *node, const char *host, uint16_t port, const char *tenantString, DPS_RegistrationList *regs, DPS_OnRegGetComplete cb, void *data)
Resolve the host and port of a registration service and lookup the addresses registered with that ser...
DPS_Status DPS_Registration_Put(DPS_Node *node, const char *host, uint16_t port, const char *tenantString, DPS_OnRegPutComplete cb, void *data)
Resolve the host and port of a registration service and register a local node with that service...
Registration entry.
Definition: registration.h:47
DPS_RegistrationList * DPS_CreateRegistrationList(uint8_t size)
Create an empty regisration list of the specified size.
DPS_Status DPS_Registration_GetSyn(DPS_Node *node, const char *host, uint16_t port, const char *tenantString, DPS_RegistrationList *regs)
A synchronous version of DPS_RegistrationGet() this function blocks until the candidate list has been...
struct _DPS_RegistrationList DPS_RegistrationList
For returning a list of candidate remote nodes.
uint8_t count
Definition: registration.h:58
uint8_t size
Definition: registration.h:57
struct _DPS_Node DPS_Node
Opaque type for a node.
Definition: dps.h:52
DPS_Status DPS_Registration_LinkTo(DPS_Node *node, DPS_RegistrationList *regs, DPS_OnRegLinkToComplete cb, void *data)
Randomly select a remote candidate to link to.
void(* DPS_OnRegLinkToComplete)(DPS_Node *node, DPS_RegistrationList *regs, DPS_NodeAddress *addr, DPS_Status status, void *data)
Function prototype for callback called when DPS_Registration_LinkTo() completes.
Definition: registration.h:166
void(* DPS_OnRegGetComplete)(DPS_RegistrationList *regs, DPS_Status status, void *data)
Function prototype for callback called when DPS_Registration_Get() completes.
Definition: registration.h:119
For returning a list of candidate remote nodes.
Definition: registration.h:56
DPS_Status DPS_Registration_LinkToSyn(DPS_Node *node, DPS_RegistrationList *regs, DPS_NodeAddress *addr)
Synchronous version of Registration_LinkTo.
void(* DPS_OnRegPutComplete)(DPS_Status status, void *data)
Function prototype for callback called when DPS_Registration_Put() completes.
Definition: registration.h:81