Distributed Publish & Subscribe for IoT
registration.h
Go to the documentation of this file.
1 
6 /*
7  *******************************************************************
8  *
9  * Copyright 2016 Intel Corporation All rights reserved.
10  *
11  *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
12  *
13  * Licensed under the Apache License, Version 2.0 (the "License");
14  * you may not use this file except in compliance with the License.
15  * You may obtain a copy of the License at
16  *
17  * http://www.apache.org/licenses/LICENSE-2.0
18  *
19  * Unless required by applicable law or agreed to in writing, software
20  * distributed under the License is distributed on an "AS IS" BASIS,
21  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22  * See the License for the specific language governing permissions and
23  * limitations under the License.
24  *
25  *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
26  */
27 
28 #ifndef _DPS_REGISTRATION_H
29 #define _DPS_REGISTRATION_H
30 
31 #include <dps/dps.h>
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
49 #define DPS_REGISTRATION_PUT_TIMEOUT 2000
50 #define DPS_REGISTRATION_GET_TIMEOUT 5000
53 extern const char* DPS_RegistryTopicString;
54 
55 /*
56  * Registration entry flags
57  */
58 #define DPS_CANDIDATE_TRYING 0x01
59 #define DPS_CANDIDATE_FAILED 0x02
60 #define DPS_CANDIDATE_LINKED 0x04
61 #define DPS_CANDIDATE_UNLINKED 0x08
62 #define DPS_CANDIDATE_INVALID 0x10
67 typedef struct _DPS_Registration {
68  uint8_t flags;
69  char* addrText;
71 
75 typedef struct _DPS_RegistrationList {
76  uint8_t size;
77  uint8_t count;
80 
89 
96 
106 typedef void (*DPS_OnRegPutComplete)(DPS_Status status, void* data);
107 
121 DPS_Status DPS_Registration_Put(DPS_Node* node, const char* addrText, const char* tenantString,
122  uint16_t timeout, DPS_OnRegPutComplete cb, void* data);
123 
135 DPS_Status DPS_Registration_PutSyn(DPS_Node* node, const char* addrText, const char* tenantString,
136  uint16_t timeout);
137 
145 typedef void (*DPS_OnRegGetComplete)(DPS_RegistrationList* regs, DPS_Status status, void* data);
146 
163 DPS_Status DPS_Registration_Get(DPS_Node* node, const char* addrText, const char* tenantString,
164  DPS_RegistrationList* regs, uint16_t timeout, DPS_OnRegGetComplete cb,
165  void* data);
166 
179 DPS_Status DPS_Registration_GetSyn(DPS_Node* node, const char* addrText, const char* tenantString,
180  DPS_RegistrationList* regs, uint16_t timeout);
181 
194 typedef void (*DPS_OnRegLinkToComplete)(DPS_Node* node, DPS_RegistrationList* regs, const DPS_NodeAddress* addr, DPS_Status status, void* data);
195 
210 
224  // end of registration group
226  // end of services group
228 
229 #ifdef __cplusplus
230 }
231 #endif
232 
233 #endif
uint8_t flags
Registration entry flags.
Definition: registration.h:68
DPS_Registration list[1]
The list.
Definition: registration.h:78
Public APIs.
DPS_Status DPS_Registration_Put(DPS_Node *node, const char *addrText, const char *tenantString, uint16_t timeout, DPS_OnRegPutComplete cb, void *data)
Register a local node with a registration service.
void(* DPS_OnRegGetComplete)(DPS_RegistrationList *regs, DPS_Status status, void *data)
Function prototype for callback called when DPS_Registration_Get() completes.
Definition: registration.h:145
struct _DPS_NodeAddress DPS_NodeAddress
Opaque type for a remote node address.
Definition: dps.h:57
DPS_RegistrationList * DPS_CreateRegistrationList(uint8_t size)
Create an empty registration list of the specified size.
struct _DPS_Registration DPS_Registration
Registration entry.
Registration entry.
Definition: registration.h:67
int DPS_Status
The status code type.
Definition: err.h:41
DPS_Status DPS_Registration_LinkTo(DPS_Node *node, DPS_RegistrationList *regs, DPS_OnRegLinkToComplete cb, void *data)
Randomly select a remote candidate to link to.
struct _DPS_RegistrationList DPS_RegistrationList
For returning a list of candidate remote nodes.
DPS_Status DPS_Registration_Get(DPS_Node *node, const char *addrText, const char *tenantString, DPS_RegistrationList *regs, uint16_t timeout, DPS_OnRegGetComplete cb, void *data)
Lookup the addresses registered with a registration service.
char * addrText
The registered address text.
Definition: registration.h:69
uint8_t count
Number of entries currently in the list.
Definition: registration.h:77
DPS_Status DPS_Registration_LinkToSyn(DPS_Node *node, DPS_RegistrationList *regs, DPS_NodeAddress *addr)
Synchronous version of Registration_LinkTo.
uint8_t size
Size of the list.
Definition: registration.h:76
DPS_Status DPS_Registration_PutSyn(DPS_Node *node, const char *addrText, const char *tenantString, uint16_t timeout)
Synchronous version of DPS_RegistrationPut().
DPS_Status DPS_Registration_GetSyn(DPS_Node *node, const char *addrText, const char *tenantString, DPS_RegistrationList *regs, uint16_t timeout)
A synchronous version of DPS_RegistrationGet() this function blocks until the candidate list has been...
void DPS_DestroyRegistrationList(DPS_RegistrationList *regs)
Destroy a registration list and free resources.
For returning a list of candidate remote nodes.
Definition: registration.h:75
void(* DPS_OnRegPutComplete)(DPS_Status status, void *data)
Function prototype for callback called when DPS_Registration_Put() completes.
Definition: registration.h:106
void(* DPS_OnRegLinkToComplete)(DPS_Node *node, DPS_RegistrationList *regs, const DPS_NodeAddress *addr, DPS_Status status, void *data)
Function prototype for callback called when DPS_Registration_LinkTo() completes.
Definition: registration.h:194
struct _DPS_Node DPS_Node
Opaque type for a node.
Definition: dps.h:450