xrootd
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 <stdint.h>
12 #include <time.h>
13 
14 #include <exception>
15 
16 namespace XrdCl
17 {
18  class operation_expired : public std::exception {};
19 
20  class Timeout
21  {
22  public:
23 
24  Timeout(): timeout( 0 ), start( 0 )
25  {
26  }
27 
28  Timeout( uint16_t timeout ): timeout( timeout ), start( time( 0 ) )
29  {
30  }
31 
33  {
34  timeout = to.timeout;
35  start = to.timeout;
36  return *this;
37  }
38 
40  {
41  }
42 
43  operator uint16_t() const
44  {
45  if( !timeout ) return 0;
46  time_t elapsed = time( 0 ) - start;
47  if( timeout < elapsed) throw operation_expired();
48  return timeout - elapsed;
49  }
50 
51  private:
52 
53  uint16_t timeout;
54  time_t start;
55  };
56 
57 }
58 
59 #endif /* SRC_XRDCL_XRDCLOPERATIONTIMEOUT_HH_ */
Timeout(const Timeout &to)
Definition: XrdClOperationTimeout.hh:39
Definition: XrdClOperationTimeout.hh:20
Timeout & operator=(const Timeout &to)
Definition: XrdClOperationTimeout.hh:32
Definition: XrdClOperationTimeout.hh:18
static INT to(const char *buffer)
Definition: XrdZipUtils.hh:82
Definition: XrdClAnyObject.hh:25
Timeout()
Definition: XrdClOperationTimeout.hh:24
Timeout(uint16_t timeout)
Definition: XrdClOperationTimeout.hh:28
time_t start
Definition: XrdClOperationTimeout.hh:54
uint16_t timeout
Definition: XrdClOperationTimeout.hh:53