libcoap  4.1.2
Go to the documentation of this file.
1 /*
2  * async.h -- state management for asynchronous messages
3  *
4  * Copyright (C) 2010-2011 Olaf Bergmann <>
5  *
6  * This file is part of the CoAP library libcoap. Please see README for terms
7  * of use.
8  */
15 #ifndef _COAP_ASYNC_H_
16 #define _COAP_ASYNC_H_
18 #include "net.h"
20 #ifndef WITHOUT_ASYNC
31 typedef struct coap_async_state_t {
32  unsigned char flags;
45  void *appdata;
46  unsigned short message_id;
50  size_t tokenlen;
51  unsigned char token[];
54 /* Definitions for Async Status Flags These flags can be used to control the
55  * behaviour of asynchronous response generation.
56  */
57 #define COAP_ASYNC_CONFIRM 0x01
58 #define COAP_ASYNC_SEPARATE 0x02
59 #define COAP_ASYNC_OBSERVED 0x04
87  coap_pdu_t *request,
88  unsigned char flags,
89  void *data);
106 int coap_remove_async(coap_context_t *context,
107  coap_tid_t id,
108  coap_async_state_t **s);
117 void
139 static inline void
144 #endif /* WITHOUT_ASYNC */
146 #endif /* _COAP_ASYNC_H_ */
coap_tick_t created
Holds the internal time when the object was registered with a resource.
Definition: async.h:39
void * appdata
This field can be used to register opaque application data with the asynchronous state object...
Definition: async.h:45
multi-purpose address abstraction
Definition: address.h:59
int coap_tid_t
coap_tid_t is used to store CoAP transaction id, i.e.
Definition: pdu.h:163
unsigned char flags
holds the flags to control behaviour
Definition: async.h:32
coap_address_t peer
the peer to notify
Definition: async.h:49
unsigned long coap_tick_t
This data type represents internal timer ticks with COAP_TICKS_PER_SECOND resolution.
Definition: coap_time.h:84
coap_tid_t id
transaction id
Definition: async.h:47
Header structure for CoAP PDUs.
Definition: pdu.h:227
struct coap_async_state_t coap_async_state_t
coap_async_state_t * coap_register_async(coap_context_t *context, coap_address_t *peer, coap_pdu_t *request, unsigned char flags, void *data)
Allocates a new coap_async_state_t object and fills its fields according to the given request...
Definition: async.c:24
void coap_ticks(coap_tick_t *t)
Sets t to the internal time with COAP_TICKS_PER_SECOND resolution.
Definition: coap_time.c:49
static void coap_touch_async(coap_async_state_t *s)
Updates the time stamp of s.
Definition: async.h:140
int coap_remove_async(coap_context_t *context, coap_tid_t id, coap_async_state_t **s)
Removes the state object identified by id from context.
Definition: async.c:80
coap_async_state_t * coap_find_async(coap_context_t *context, coap_tid_t id)
Retrieves the object identified by id from the list of asynchronous transactions that are registered ...
Definition: async.c:73
void coap_free_async(coap_async_state_t *state)
Releases the memory that was allocated by coap_async_state_init() for the object s.
Definition: async.c:92
unsigned short message_id
id of last message seen
Definition: async.h:46
size_t tokenlen
length of the token
Definition: async.h:50
unsigned char token[]
the token to use in a response
Definition: async.h:51
struct coap_async_state_t * next
internally used for linking
Definition: async.h:48
The CoAP stack&#39;s global state is stored in a coap_context_t object.
Definition: net.h:76