1
1
// Copyright (c) 2022-2023 Yuki Kishimoto
2
2
// Distributed under the MIT software license
3
3
4
- use std:: sync:: atomic:: { AtomicBool , Ordering } ;
4
+ use std:: sync:: atomic:: { AtomicBool , AtomicU64 , Ordering } ;
5
5
use std:: sync:: Arc ;
6
6
use std:: time:: Duration ;
7
7
@@ -14,20 +14,23 @@ pub struct RelayOptions {
14
14
read : Arc < AtomicBool > ,
15
15
/// Allow/disallow write actions
16
16
write : Arc < AtomicBool > ,
17
+ /// Retry connection time - avoid reconnection
18
+ retry_sec : Arc < AtomicU64 > ,
17
19
}
18
20
19
21
impl Default for RelayOptions {
20
22
fn default ( ) -> Self {
21
- Self :: new ( true , true )
23
+ Self :: new ( true , true , 10 )
22
24
}
23
25
}
24
26
25
27
impl RelayOptions {
26
28
/// New [`RelayOptions`]
27
- pub fn new ( read : bool , write : bool ) -> Self {
29
+ pub fn new ( read : bool , write : bool , retry_sec : u64 ) -> Self {
28
30
Self {
29
31
read : Arc :: new ( AtomicBool :: new ( read) ) ,
30
32
write : Arc :: new ( AtomicBool :: new ( write) ) ,
33
+ retry_sec : Arc :: new ( AtomicU64 :: new ( retry_sec) ) ,
31
34
}
32
35
}
33
36
@@ -54,6 +57,18 @@ impl RelayOptions {
54
57
. write
55
58
. fetch_update ( Ordering :: SeqCst , Ordering :: SeqCst , |_| Some ( write) ) ;
56
59
}
60
+
61
+ /// Get retry_sec option
62
+ pub fn retry_sec ( & self ) -> u64 {
63
+ self . retry_sec . load ( Ordering :: SeqCst )
64
+ }
65
+
66
+ /// Set retry_sec option
67
+ pub fn set_retry_sec ( & self , retry_sec : u64 ) {
68
+ let _ = self
69
+ . retry_sec
70
+ . fetch_update ( Ordering :: SeqCst , Ordering :: SeqCst , |_| Some ( retry_sec) ) ;
71
+ }
57
72
}
58
73
59
74
/// [`Relay`](super::Relay) send options
0 commit comments