]> git.ipfire.org Git - thirdparty/openssl.git/blame - test/ossl_shim/packeted_bio.h
Swap header copyrights to standard OpenSSL
[thirdparty/openssl.git] / test / ossl_shim / packeted_bio.h
CommitLineData
92ab7db6
MC
1/*
2 * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
eef977aa 3 *
92ab7db6
MC
4 * Licensed under the OpenSSL license (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
8 */
eef977aa
MC
9
10#ifndef HEADER_PACKETED_BIO
11#define HEADER_PACKETED_BIO
12
7b73b7be 13#include <openssl/base.h>
eef977aa
MC
14#include <openssl/bio.h>
15
1669b7b5 16#if defined(OPENSSL_SYS_WINDOWS)
7b73b7be 17OPENSSL_MSVC_PRAGMA(warning(push, 3))
eef977aa 18#include <winsock2.h>
7b73b7be 19OPENSSL_MSVC_PRAGMA(warning(pop))
eef977aa
MC
20#else
21#include <sys/time.h>
22#endif
23
24
25// PacketedBioCreate creates a filter BIO which implements a reliable in-order
7b73b7be
MC
26// blocking datagram socket. It internally maintains a clock and honors
27// |BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT| based on it.
eef977aa 28//
7b73b7be
MC
29// During a |BIO_read|, the peer may signal the filter BIO to simulate a
30// timeout. If |advance_clock| is true, it automatically advances the clock and
31// continues reading, subject to the read deadline. Otherwise, it fails
32// immediately. The caller must then call |PacketedBioAdvanceClock| before
33// retrying |BIO_read|.
34bssl::UniquePtr<BIO> PacketedBioCreate(bool advance_clock);
35
36// PacketedBioGetClock returns the current time for |bio|.
37timeval PacketedBioGetClock(const BIO *bio);
38
39// PacketedBioAdvanceClock advances |bio|'s internal clock and returns true if
40// there is a pending timeout. Otherwise, it returns false.
41bool PacketedBioAdvanceClock(BIO *bio);
eef977aa
MC
42
43
44#endif // HEADER_PACKETED_BIO