Blame test/ossl_shim/packeted_bio.h

Packit c4476c
/*
Packit c4476c
 * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
Packit c4476c
 *
Packit c4476c
 * Licensed under the OpenSSL license (the "License").  You may not use
Packit c4476c
 * this file except in compliance with the License.  You can obtain a copy
Packit c4476c
 * in the file LICENSE in the source distribution or at
Packit c4476c
 * https://www.openssl.org/source/license.html
Packit c4476c
 */
Packit c4476c
Packit c4476c
#ifndef OSSL_TEST_SHIM_PACKETED_BIO_H
Packit c4476c
#define OSSL_TEST_SHIM_PACKETED_BIO_H
Packit c4476c
Packit c4476c
#include <openssl/base.h>
Packit c4476c
#include <openssl/bio.h>
Packit c4476c
Packit c4476c
// PacketedBioCreate creates a filter BIO which implements a reliable in-order
Packit c4476c
// blocking datagram socket. It internally maintains a clock and honors
Packit c4476c
// |BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT| based on it.
Packit c4476c
//
Packit c4476c
// During a |BIO_read|, the peer may signal the filter BIO to simulate a
Packit c4476c
// timeout. If |advance_clock| is true, it automatically advances the clock and
Packit c4476c
// continues reading, subject to the read deadline. Otherwise, it fails
Packit c4476c
// immediately. The caller must then call |PacketedBioAdvanceClock| before
Packit c4476c
// retrying |BIO_read|.
Packit c4476c
bssl::UniquePtr<BIO> PacketedBioCreate(bool advance_clock);
Packit c4476c
Packit c4476c
// PacketedBioGetClock returns the current time for |bio|.
Packit c4476c
timeval PacketedBioGetClock(const BIO *bio);
Packit c4476c
Packit c4476c
// PacketedBioAdvanceClock advances |bio|'s internal clock and returns true if
Packit c4476c
// there is a pending timeout. Otherwise, it returns false.
Packit c4476c
bool PacketedBioAdvanceClock(BIO *bio);
Packit c4476c
Packit c4476c
Packit c4476c
#endif  // OSSL_TEST_SHIM_PACKETED_BIO_H