libcoap  4.3.1
resource.h
Go to the documentation of this file.
1 /*
2  * resource.h -- generic resource handling
3  *
4  * Copyright (C) 2010,2011,2014-2022 Olaf Bergmann <bergmann@tzi.org>
5  *
6  * SPDX-License-Identifier: BSD-2-Clause
7  *
8  * This file is part of the CoAP library libcoap. Please see README for terms
9  * of use.
10  */
11 
17 #ifndef COAP_RESOURCE_H_
18 #define COAP_RESOURCE_H_
19 
20 #ifndef COAP_RESOURCE_CHECK_TIME
22 #define COAP_RESOURCE_CHECK_TIME 2
23 #endif /* COAP_RESOURCE_CHECK_TIME */
24 
25 #include "coap_async.h"
26 #include "block.h"
27 #include "str.h"
28 #include "pdu.h"
29 #include "net.h"
30 #include "coap_subscribe.h"
31 
42 typedef void (*coap_method_handler_t)
43  (coap_resource_t *,
45  const coap_pdu_t * /* request */,
46  const coap_string_t * /* query string */,
47  coap_pdu_t * /* response */);
48 
49 #define COAP_ATTR_FLAGS_RELEASE_NAME 0x1
50 #define COAP_ATTR_FLAGS_RELEASE_VALUE 0x2
51 
53 #define COAP_RESOURCE_FLAGS_RELEASE_URI 0x1
54 
61 #define COAP_RESOURCE_FLAGS_NOTIFY_NON 0x0
62 
67 #define COAP_RESOURCE_FLAGS_NOTIFY_CON 0x2
68 
77 #define COAP_RESOURCE_FLAGS_NOTIFY_NON_ALWAYS 0x4
78 
87 #define COAP_RESOURCE_FLAGS_HAS_MCAST_SUPPORT 0x8
88 
98 #define COAP_RESOURCE_FLAGS_LIB_DIS_MCAST_DELAYS 0x10
99 
107 #define COAP_RESOURCE_FLAGS_LIB_ENA_MCAST_SUPPRESS_2_05 0x20
108 
116 #define COAP_RESOURCE_FLAGS_LIB_ENA_MCAST_SUPPRESS_2_XX 0x40
117 
125 #define COAP_RESOURCE_FLAGS_LIB_DIS_MCAST_SUPPRESS_4_XX 0x80
126 
134 #define COAP_RESOURCE_FLAGS_LIB_DIS_MCAST_SUPPRESS_5_XX 0x100
135 
136 #define COAP_RESOURCE_FLAGS_MCAST_LIST \
137  (COAP_RESOURCE_FLAGS_HAS_MCAST_SUPPORT | \
138  COAP_RESOURCE_FLAGS_LIB_DIS_MCAST_DELAYS | \
139  COAP_RESOURCE_FLAGS_LIB_ENA_MCAST_SUPPRESS_2_05 | \
140  COAP_RESOURCE_FLAGS_LIB_ENA_MCAST_SUPPRESS_2_XX | \
141  COAP_RESOURCE_FLAGS_LIB_DIS_MCAST_SUPPRESS_4_XX | \
142  COAP_RESOURCE_FLAGS_LIB_DIS_MCAST_SUPPRESS_5_XX)
143 
164  int flags);
165 
193 
223  int flags);
224 
241  size_t host_name_count, const char *host_name_list[]);
242 
262  size_t host_name_count,
263  const char *host_name_list[],
264  int flags);
265 
276  coap_str_const_t *uri_path);
277 
286 
295 void coap_resource_set_mode(coap_resource_t *resource, int mode);
296 
305 void coap_resource_set_userdata(coap_resource_t *resource, void *data);
306 
316 
320 typedef void (*coap_resource_release_userdata_handler_t)(void *user_data);
321 
332 
342 
355 
365  coap_request_t method,
366  coap_method_handler_t handler);
367 
377  coap_request_t method,
378  coap_method_handler_t handler);
379 
411  coap_str_const_t *name,
412  coap_str_const_t *value,
413  int flags);
414 
425  coap_str_const_t *name);
426 
435 
445 typedef unsigned int coap_print_status_t;
446 
447 #define COAP_PRINT_STATUS_MASK 0xF0000000u
448 #define COAP_PRINT_OUTPUT_LENGTH(v) ((v) & ~COAP_PRINT_STATUS_MASK)
449 #define COAP_PRINT_STATUS_ERROR 0x80000000u
450 #define COAP_PRINT_STATUS_TRUNC 0x40000000u
451 
474  unsigned char *buf,
475  size_t *len,
476  size_t *offset);
477 
490  coap_str_const_t *uri_path);
491 
495 COAP_DEPRECATED int
497  const coap_string_t *query);
498 
499 #endif /* COAP_RESOURCE_H_ */
CoAP Block information.
State management for asynchronous messages.
Defines the application visible subscribe information.
coap_resource_t * coap_resource_proxy_uri_init(coap_method_handler_t handler, size_t host_name_count, const char *host_name_list[])
Creates a new resource object for handling proxy URIs.
coap_print_status_t coap_print_link(const coap_resource_t *resource, unsigned char *buf, size_t *len, size_t *offset)
Writes a description of this resource in link-format to given text buffer.
void coap_resource_set_mode(coap_resource_t *resource, int mode)
Sets the notification message type of resource resource to given mode.
coap_resource_t * coap_get_resource_from_uri_path(coap_context_t *context, coap_str_const_t *uri_path)
Returns the resource identified by the unique string uri_path.
coap_str_const_t * coap_resource_get_uri_path(coap_resource_t *resource)
Get the uri_path from a resource.
coap_str_const_t * coap_attr_get_value(coap_attr_t *attribute)
Returns attribute's value.
void coap_resource_release_userdata_handler(coap_context_t *context, coap_resource_release_userdata_handler_t callback)
Defines the context wide callback to use to when the resource is deleted to release the data held in ...
void coap_register_handler(coap_resource_t *resource, coap_request_t method, coap_method_handler_t handler)
Registers the specified handler as message handler for the request type method.
coap_resource_t * coap_resource_unknown_init(coap_method_handler_t put_handler)
Creates a new resource object for the unknown resource handler with support for PUT.
coap_resource_t * coap_resource_proxy_uri_init2(coap_method_handler_t handler, size_t host_name_count, const char *host_name_list[], int flags)
Creates a new resource object for handling proxy URIs with configurable control over multicast reques...
coap_attr_t * coap_find_attr(coap_resource_t *resource, coap_str_const_t *name)
Returns resource's coap_attr_t object with given name if found, NULL otherwise.
unsigned int coap_print_status_t
Status word to encode the result of conditional print or copy operations such as coap_print_link().
Definition: resource.h:445
void(* coap_method_handler_t)(coap_resource_t *, coap_session_t *, const coap_pdu_t *, const coap_string_t *, coap_pdu_t *)
Definition of message handler function.
Definition: resource.h:43
coap_resource_t * coap_resource_init(coap_str_const_t *uri_path, int flags)
Creates a new resource object and initializes the link field to the string uri_path.
void(* coap_resource_release_userdata_handler_t)(void *user_data)
Definition of release resource user_data callback function.
Definition: resource.h:320
void coap_add_resource(coap_context_t *context, coap_resource_t *resource)
Registers the given resource for context.
void coap_register_request_handler(coap_resource_t *resource, coap_request_t method, coap_method_handler_t handler)
Registers the specified handler as message handler for the request type method.
void coap_resource_set_userdata(coap_resource_t *resource, void *data)
Sets the user_data.
coap_attr_t * coap_add_attr(coap_resource_t *resource, coap_str_const_t *name, coap_str_const_t *value, int flags)
Registers a new attribute with the given resource.
int coap_delete_resource(coap_context_t *context, coap_resource_t *resource)
Deletes a resource identified by resource.
void * coap_resource_get_userdata(coap_resource_t *resource)
Gets the user_data.
coap_resource_t * coap_resource_unknown_init2(coap_method_handler_t put_handler, int flags)
Creates a new resource object for the unknown resource handler with support for PUT and configurable ...
coap_request_t
CoAP PDU Request methods.
Definition: pdu.h:70
#define COAP_DEPRECATED
Definition: libcoap.h:53
CoAP context interface.
Pre-defined constants that reflect defaults for CoAP.
COAP_DEPRECATED int coap_resource_set_dirty(coap_resource_t *r, const coap_string_t *query)
Strings to be used in the CoAP library.
Abstraction of attribute associated with a resource.
The CoAP stack's global state is stored in a coap_context_t object.
structure for CoAP PDUs
Abstraction of resource that can be attached to coap_context_t.
Abstraction of virtual session that can be attached to coap_context_t (client) or coap_endpoint_t (se...
CoAP string data definition with const data.
Definition: str.h:46
CoAP string data definition.
Definition: str.h:38