xrootd
Loading...
Searching...
No Matches
XrdClOperationTimeout.hh
Go to the documentation of this file.
1/*
2 * XrdClOperationTimeout.hh
3 *
4 * Created on: 4 Nov 2020
5 * Author: simonm
6 */
7
8#ifndef SRC_XRDCL_XRDCLOPERATIONTIMEOUT_HH_
9#define SRC_XRDCL_XRDCLOPERATIONTIMEOUT_HH_
10
11#include <cstdint>
12#include <ctime>
13#include <exception>
14
15namespace XrdCl
16{
17 class operation_expired : public std::exception {};
18
19 class Timeout
20 {
21 public:
22
23 Timeout(): timeout( 0 ), start( 0 )
24 {
25 }
26
27 Timeout( uint16_t timeout ): timeout( timeout ), start( time( 0 ) )
28 {
29 }
30
32 {
34 start = to.start;
35 return *this;
36 }
37
39 {
40 }
41
42 operator uint16_t() const
43 {
44 if( !timeout ) return 0;
45 time_t elapsed = time( 0 ) - start;
46 if( timeout < elapsed) throw operation_expired();
47 return timeout - elapsed;
48 }
49
50 private:
51
52 uint16_t timeout;
53 time_t start;
54 };
55
56}
57
58#endif /* SRC_XRDCL_XRDCLOPERATIONTIMEOUT_HH_ */
Definition XrdClOperationTimeout.hh:20
Timeout(const Timeout &to)
Definition XrdClOperationTimeout.hh:38
uint16_t timeout
Definition XrdClOperationTimeout.hh:52
Timeout()
Definition XrdClOperationTimeout.hh:23
Timeout(uint16_t timeout)
Definition XrdClOperationTimeout.hh:27
time_t start
Definition XrdClOperationTimeout.hh:53
Timeout & operator=(const Timeout &to)
Definition XrdClOperationTimeout.hh:31
Definition XrdClOperationTimeout.hh:17
Definition XrdClAction.hh:34
static INT to(const char *buffer)
Definition XrdZipUtils.hh:91