libcoap 4.3.5-develop-19cef11
coap_cache_internal.h
Go to the documentation of this file.
1/*
2 * coap_cache_internal.h -- Cache functions for libcoap
3 *
4 * Copyright (C) 2019--2024 Olaf Bergmann <bergmann@tzi.org> and others
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_CACHE_INTERNAL_H_
18#define COAP_CACHE_INTERNAL_H_
19
20#include "coap_internal.h"
21#include "coap_io.h"
22#include "coap_uthash_internal.h"
23
24#if COAP_SERVER_SUPPORT
32/* Holds a digest in binary typically sha256 except for notls */
33typedef struct coap_digest_t {
34 uint8_t key[32];
36
38 uint8_t key[32];
39};
40
42 UT_hash_handle hh;
46 void *app_data;
48 unsigned int idle_timeout;
50};
51
60
74 const coap_cache_key_t *cache_key);
75
91 const coap_pdu_t *pdu,
92 coap_cache_session_based_t session_based);
93
109 const uint16_t *options, size_t count);
110
137 const coap_pdu_t *pdu,
138 coap_cache_record_pdu_t record_pdu,
139 coap_cache_session_based_t session_based,
140 unsigned int idle_time);
141
142typedef void coap_digest_ctx_t;
143
152
162
175 const uint8_t *data,
176 size_t data_len
177 );
178
191 coap_digest_t *digest_buffer);
192
195#endif /* COAP_SERVER_SUPPORT */
196
197#endif /* COAP_CACHE_INTERNAL_H_ */
Pulls together all the internal only header files.
Default network I/O functions.
coap_cache_entry_t * coap_cache_get_by_pdu_lkd(coap_session_t *session, const coap_pdu_t *pdu, coap_cache_session_based_t session_based)
Searches for a cache-entry corresponding to pdu.
void coap_digest_free(coap_digest_ctx_t *digest_ctx)
Free off coap_digest_ctx_t.
int coap_cache_ignore_options_lkd(coap_context_t *context, const uint16_t *options, size_t count)
Define the CoAP options that are not to be included when calculating the cache-key.
coap_cache_entry_t * coap_cache_get_by_key_lkd(coap_context_t *context, const coap_cache_key_t *cache_key)
Searches for a cache-entry identified by cache_key.
coap_cache_entry_t * coap_new_cache_entry_lkd(coap_session_t *session, const coap_pdu_t *pdu, coap_cache_record_pdu_t record_pdu, coap_cache_session_based_t session_based, unsigned int idle_time)
Create a new cache-entry hash keyed by cache-key derived from the PDU.
struct coap_digest_t coap_digest_t
int coap_digest_final(coap_digest_ctx_t *digest_ctx, coap_digest_t *digest_buffer)
Finalize the coap_digest information into the provided digest_buffer.
int coap_digest_update(coap_digest_ctx_t *digest_ctx, const uint8_t *data, size_t data_len)
Update the coap_digest information with the next chunk of data.
void coap_digest_ctx_t
void coap_expire_cache_entries(coap_context_t *context)
Expire coap_cache_entry_t entries.
coap_digest_ctx_t * coap_digest_setup(void)
Initialize a coap_digest.
coap_cache_record_pdu_t
Definition: coap_cache.h:42
void(* coap_cache_app_data_free_callback_t)(void *data)
Callback to free off the app data when the cache-entry is being deleted / freed off.
Definition: coap_cache.h:35
coap_cache_session_based_t
Definition: coap_cache.h:37
uint64_t coap_tick_t
This data type represents internal timer ticks with COAP_TICKS_PER_SECOND resolution.
Definition: coap_time.h:143
coap_session_t * session
coap_cache_app_data_free_callback_t callback
coap_tick_t expire_ticks
void * app_data
unsigned int idle_timeout
coap_cache_key_t * cache_key
coap_pdu_t * pdu
UT_hash_handle hh
The CoAP stack's global state is stored in a coap_context_t object.
structure for CoAP PDUs
Abstraction of virtual session that can be attached to coap_context_t (client) or coap_endpoint_t (se...