Loading...
Searching...
No Matches
coap_resource.h
Go to the documentation of this file.
/*
* coap_resource.h -- generic resource handling
*
* Copyright (C) 2010,2011,2014-2024 Olaf Bergmann <bergmann@tzi.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*
* This file is part of the CoAP library libcoap. Please see README for terms
* of use.
*/
#ifndef COAP_RESOURCE_H_
#define COAP_RESOURCE_H_
#ifndef COAP_RESOURCE_CHECK_TIME
#define COAP_RESOURCE_CHECK_TIME 2
#endif /* COAP_RESOURCE_CHECK_TIME */
typedef void (*coap_method_handler_t)(coap_resource_t *resource,
coap_session_t *session,
const coap_pdu_t *request,
const coap_string_t *query,
coap_pdu_t *response);
#define COAP_ATTR_FLAGS_RELEASE_NAME 0x1
#define COAP_ATTR_FLAGS_RELEASE_VALUE 0x2
#define COAP_RESOURCE_FLAGS_RELEASE_URI 0x1
#define COAP_RESOURCE_FLAGS_NOTIFY_NON 0x0
#define COAP_RESOURCE_FLAGS_NOTIFY_CON 0x2
#define COAP_RESOURCE_FLAGS_NOTIFY_NON_ALWAYS 0x4
#define COAP_RESOURCE_FLAGS_HAS_MCAST_SUPPORT 0x8
#define COAP_RESOURCE_FLAGS_LIB_DIS_MCAST_DELAYS 0x10
#define COAP_RESOURCE_FLAGS_LIB_ENA_MCAST_SUPPRESS_2_05 0x20
#define COAP_RESOURCE_FLAGS_LIB_ENA_MCAST_SUPPRESS_2_XX 0x40
#define COAP_RESOURCE_FLAGS_LIB_DIS_MCAST_SUPPRESS_4_XX 0x80
#define COAP_RESOURCE_FLAGS_LIB_DIS_MCAST_SUPPRESS_5_XX 0x100
#define COAP_RESOURCE_FLAGS_MCAST_LIST \
(COAP_RESOURCE_FLAGS_HAS_MCAST_SUPPORT | \
COAP_RESOURCE_FLAGS_LIB_DIS_MCAST_DELAYS | \
COAP_RESOURCE_FLAGS_LIB_ENA_MCAST_SUPPRESS_2_05 | \
COAP_RESOURCE_FLAGS_LIB_ENA_MCAST_SUPPRESS_2_XX | \
COAP_RESOURCE_FLAGS_LIB_DIS_MCAST_SUPPRESS_4_XX | \
COAP_RESOURCE_FLAGS_LIB_DIS_MCAST_SUPPRESS_5_XX)
#define COAP_RESOURCE_FLAGS_FORCE_SINGLE_BODY 0x200
#define COAP_RESOURCE_FLAGS_OSCORE_ONLY 0x400
#define COAP_RESOURCE_HANDLE_WELLKNOWN_CORE 0x800
coap_resource_t *coap_resource_init(coap_str_const_t *uri_path,
int flags);
coap_resource_t *coap_resource_unknown_init(coap_method_handler_t put_handler);
coap_resource_t *coap_resource_unknown_init2(coap_method_handler_t put_handler,
int flags);
coap_resource_t *coap_resource_proxy_uri_init(coap_method_handler_t handler,
size_t host_name_count, const char *host_name_list[]);
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);
coap_resource_t *coap_resource_reverse_proxy_init(coap_method_handler_t handler,
int flags);
COAP_API coap_resource_t *coap_get_resource_from_uri_path(coap_context_t *context,
coap_str_const_t *uri_path);
coap_str_const_t *coap_resource_get_uri_path(coap_resource_t *resource);
void coap_resource_set_mode(coap_resource_t *resource, int mode);
void coap_resource_set_userdata(coap_resource_t *resource, void *data);
void *coap_resource_get_userdata(coap_resource_t *resource);
typedef void (*coap_resource_release_userdata_handler_t)(void *user_data);
void coap_resource_release_userdata_handler(coap_context_t *context,
coap_resource_release_userdata_handler_t callback);
COAP_API void coap_add_resource(coap_context_t *context, coap_resource_t *resource);
COAP_API int coap_delete_resource(coap_context_t *context, coap_resource_t *resource);
void coap_register_handler(coap_resource_t *resource,
coap_request_t method,
coap_method_handler_t handler);
void coap_register_request_handler(coap_resource_t *resource,
coap_request_t method,
coap_method_handler_t handler);
coap_attr_t *coap_add_attr(coap_resource_t *resource,
coap_str_const_t *name,
coap_str_const_t *value,
int flags);
coap_attr_t *coap_find_attr(coap_resource_t *resource,
coap_str_const_t *name);
coap_str_const_t *coap_attr_get_value(coap_attr_t *attribute);
typedef uint32_t coap_print_status_t;
#define COAP_PRINT_STATUS_MASK 0xF0000000UL
#define COAP_PRINT_STATUS_MAX 0x0FFFFFFFUL
#define COAP_PRINT_OUTPUT_LENGTH(v) ((v) & COAP_PRINT_STATUS_MAX)
#define COAP_PRINT_STATUS_ERROR 0x80000000UL
#define COAP_PRINT_STATUS_TRUNC 0x40000000UL
coap_print_status_t coap_print_link(const coap_resource_t *resource,
unsigned char *buf,
size_t *len,
size_t *offset);
COAP_API coap_print_status_t coap_print_wellknown(coap_context_t *context,
unsigned char *buf,
size_t *buflen,
size_t offset,
const coap_string_t *query_filter);
COAP_DEPRECATED COAP_API int coap_resource_set_dirty(coap_resource_t *r,
const coap_string_t *query);
#endif /* COAP_RESOURCE_H_ */
COAP_API
#define COAP_API
Definition coap_libcoap_build.h:41
coap_resource_set_dirty
COAP_DEPRECATED COAP_API int coap_resource_set_dirty(coap_resource_t *r, const coap_string_t *query)
coap_get_resource_from_uri_path
COAP_API 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_resource_proxy_uri_init
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_add_attr
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.
coap_print_link
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.
coap_resource_proxy_uri_init2
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_resource_set_mode
void coap_resource_set_mode(coap_resource_t *resource, int mode)
Sets the notification message type of resource resource to given mode.
coap_method_handler_t
void(* coap_method_handler_t)(coap_resource_t *resource, coap_session_t *session, const coap_pdu_t *request, const coap_string_t *query, coap_pdu_t *response)
Definition of message handler function.
Definition coap_resource.h:41
coap_resource_release_userdata_handler
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 ...
coap_print_wellknown
COAP_API coap_print_status_t coap_print_wellknown(coap_context_t *context, unsigned char *buf, size_t *buflen, size_t offset, const coap_string_t *query_filter)
Prints the names of all known resources for context to buf.
coap_resource_reverse_proxy_init
coap_resource_t * coap_resource_reverse_proxy_init(coap_method_handler_t handler, int flags)
Creates a new resource object for the reverse-proxy resource handler with control over multicast requ...
coap_delete_resource
COAP_API int coap_delete_resource(coap_context_t *context, coap_resource_t *resource)
Deletes a resource identified by resource.
coap_register_handler
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_release_userdata_handler_t
void(* coap_resource_release_userdata_handler_t)(void *user_data)
Definition of release resource user_data callback function.
Definition coap_resource.h:362
coap_register_request_handler
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.
coap_resource_init
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.
coap_resource_set_userdata
void coap_resource_set_userdata(coap_resource_t *resource, void *data)
Sets the user_data.
coap_print_status_t
uint32_t coap_print_status_t
Status word to encode the result of conditional print or copy operations such as coap_print_link().
Definition coap_resource.h:489
coap_resource_get_uri_path
coap_str_const_t * coap_resource_get_uri_path(coap_resource_t *resource)
Get the uri_path from a resource.
coap_resource_unknown_init2
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_attr_get_value
coap_str_const_t * coap_attr_get_value(coap_attr_t *attribute)
Returns attribute's value.
coap_find_attr
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.
coap_resource_get_userdata
void * coap_resource_get_userdata(coap_resource_t *resource)
Gets the user_data.
coap_add_resource
COAP_API void coap_add_resource(coap_context_t *context, coap_resource_t *resource)
Registers the given resource for context.
coap_resource_unknown_init
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_request_t
coap_request_t
CoAP PDU Request methods.
Definition coap_pdu.h:78
COAP_DEPRECATED
#define COAP_DEPRECATED
Definition libcoap.h:62
coap_attr_t
Limits the number of subscribers for each resource that this server support.
Definition coap_resource_internal.h:42
coap_context_t
The CoAP stack's global state is stored in a coap_context_t object.
Definition coap_net_internal.h:50
coap_pdu_t
structure for CoAP PDUs
Definition coap_pdu_internal.h:135
coap_resource_t
Abstraction of resource that can be attached to coap_context_t.
Definition coap_resource_internal.h:53
coap_session_t
Abstraction of virtual session that can be attached to coap_context_t (client) or coap_endpoint_t (se...
Definition coap_session_internal.h:68
coap_str_const_t
CoAP string data definition with const data.
Definition coap_str.h:46
coap_string_t
CoAP string data definition.
Definition coap_str.h:38