Udipe 1.0
Solving the riddle of high-throughput UDP
Loading...
Searching...
No Matches
future.h
Go to the documentation of this file.
1#pragma once
2
16
17#include "context.h"
18#include "duration.h"
19#include "nodiscard.h"
20#include "pointer.h"
21#include "result.h"
22#include "visibility.h"
23
24#include <assert.h>
25#include <stdbool.h>
26#include <stddef.h>
27#include <stdint.h>
28#include <time.h>
29
30
313typedef struct udipe_future_s udipe_future_t;
314
350
410
475//
476// TODO: Implement
480bool udipe_cancel(udipe_future_t* future, bool finish);
481
525//
526// TODO: Implement.
532 udipe_future_t* const futures[],
533 size_t num_futures);
534
560 udipe_future_t* const futures[],
561 size_t num_futures);
562
628//
629// TODO: Implement.
635 udipe_future_t* const futures[],
636 size_t num_futures);
637
666//
667// TODO: Implement.
673 const struct timespec *ts);
674
715//
716// TODO: Implement.
722 const struct timespec *initial,
723 udipe_duration_ns_t interval);
724
802//
803// TODO: Implement.
809
829//
830// TODO: Implement.
835
861//
862// TODO: Implement.
866
899//
900// TODO: Implement.
904 bool successful,
905 udipe_custom_payload_t payload);
Core libudipe context.
struct udipe_context_s udipe_context_t
Definition context.h:65
Duration-related definitions.
uint64_t udipe_duration_ns_t
Definition duration.h:39
UDIPE_NODISCARD UDIPE_NON_NULL_ARGS UDIPE_PUBLIC udipe_result_t udipe_finish(udipe_future_t *future)
UDIPE_NODISCARD UDIPE_NON_NULL_ARGS UDIPE_NON_NULL_RESULT UDIPE_PUBLIC udipe_future_t * udipe_start_timer_repeat(udipe_context_t *context, const struct timespec *initial, udipe_duration_ns_t interval)
UDIPE_NODISCARD UDIPE_NON_NULL_ARGS UDIPE_NON_NULL_RESULT UDIPE_PUBLIC udipe_future_t * udipe_start_join(udipe_context_t *context, udipe_future_t *const futures[], size_t num_futures)
UDIPE_NODISCARD UDIPE_NON_NULL_ARGS UDIPE_PUBLIC bool udipe_cancel(udipe_future_t *future, bool finish)
UDIPE_NODISCARD UDIPE_NON_NULL_ARGS UDIPE_PUBLIC bool udipe_custom_cancelled(udipe_future_t *custom)
struct udipe_future_s udipe_future_t
Definition future.h:313
UDIPE_NODISCARD UDIPE_NON_NULL_ARGS UDIPE_NON_NULL_RESULT UDIPE_PUBLIC udipe_future_t * udipe_start_timer_once(udipe_context_t *context, const struct timespec *ts)
UDIPE_NODISCARD UDIPE_NON_NULL_ARGS UDIPE_NON_NULL_RESULT UDIPE_PUBLIC udipe_future_t * udipe_start_custom(udipe_context_t *context)
UDIPE_PUBLIC UDIPE_NON_NULL_ARGS void udipe_join(udipe_context_t *context, udipe_future_t *const futures[], size_t num_futures)
UDIPE_NODISCARD UDIPE_NON_NULL_ARGS UDIPE_NON_NULL_RESULT UDIPE_PUBLIC udipe_future_t * udipe_start_unordered(udipe_context_t *context, udipe_future_t *const futures[], size_t num_futures)
UDIPE_NON_NULL_ARGS UDIPE_PUBLIC bool udipe_custom_try_set_result(udipe_future_t *custom, bool successful, udipe_custom_payload_t payload)
UDIPE_NODISCARD UDIPE_NON_NULL_ARGS UDIPE_PUBLIC bool udipe_wait(udipe_future_t *future, udipe_duration_ns_t timeout)
UDIPE_NON_NULL_ARGS UDIPE_PUBLIC void udipe_custom_finish_cancel(udipe_future_t *custom)
Nodiscard polyfill.
#define UDIPE_NODISCARD
Definition nodiscard.h:20
Pointer shenanigans.
#define UDIPE_NON_NULL_ARGS
Definition pointer.h:17
#define UDIPE_NON_NULL_RESULT
Definition pointer.h:40
Generic result type.
Definition result.h:52
Definition result.h:189
Imported symbol visibility.
#define UDIPE_PUBLIC
Definition visibility.h:37