]>
Commit | Line | Data |
---|---|---|
92ab7db6 | 1 | /* |
6738bf14 | 2 | * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. |
eef977aa | 3 | * |
909f1a2e | 4 | * Licensed under the Apache License 2.0 (the "License"). You may not use |
92ab7db6 MC |
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 | ||
eef977aa | 16 | // PacketedBioCreate creates a filter BIO which implements a reliable in-order |
7b73b7be MC |
17 | // blocking datagram socket. It internally maintains a clock and honors |
18 | // |BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT| based on it. | |
eef977aa | 19 | // |
7b73b7be MC |
20 | // During a |BIO_read|, the peer may signal the filter BIO to simulate a |
21 | // timeout. If |advance_clock| is true, it automatically advances the clock and | |
22 | // continues reading, subject to the read deadline. Otherwise, it fails | |
23 | // immediately. The caller must then call |PacketedBioAdvanceClock| before | |
24 | // retrying |BIO_read|. | |
25 | bssl::UniquePtr<BIO> PacketedBioCreate(bool advance_clock); | |
26 | ||
27 | // PacketedBioGetClock returns the current time for |bio|. | |
28 | timeval PacketedBioGetClock(const BIO *bio); | |
29 | ||
30 | // PacketedBioAdvanceClock advances |bio|'s internal clock and returns true if | |
31 | // there is a pending timeout. Otherwise, it returns false. | |
32 | bool PacketedBioAdvanceClock(BIO *bio); | |
eef977aa MC |
33 | |
34 | ||
35 | #endif // HEADER_PACKETED_BIO |