@@ -34,7 +34,7 @@ pub(crate) type DetailsRef = Rc<RefCell<Option<Details>>>;
3434pub ( crate ) struct State {
3535 metas : HashMap < u64 , Metadata > ,
3636 last_updated_at : Option < SystemTime > ,
37- temporality : proto :: instrument :: Temporality ,
37+ temporality : Temporality ,
3838 tasks_state : TasksState ,
3939 resources_state : ResourcesState ,
4040 async_ops_state : AsyncOpsState ,
@@ -71,6 +71,29 @@ pub(crate) enum FieldValue {
7171 Debug ( String ) ,
7272}
7373
74+ #[ derive( Debug ) ]
75+ pub ( crate ) enum Temporality {
76+ Unpausing ,
77+ Live ,
78+ Pausing ,
79+ Paused ,
80+ }
81+
82+ impl Default for Temporality {
83+ fn default ( ) -> Self {
84+ Self :: Live
85+ }
86+ }
87+
88+ impl From < proto:: instrument:: Temporality > for Temporality {
89+ fn from ( pb : proto:: instrument:: Temporality ) -> Self {
90+ match pb {
91+ proto:: instrument:: Temporality :: Live => Self :: Live ,
92+ proto:: instrument:: Temporality :: Paused => Self :: Paused ,
93+ }
94+ }
95+ }
96+
7497#[ derive( Debug , Eq , PartialEq ) ]
7598pub ( crate ) struct Attribute {
7699 field : Field ,
@@ -230,13 +253,26 @@ impl State {
230253 }
231254
232255 // temporality methods
256+ pub ( crate ) fn temporality ( & self ) -> & Temporality {
257+ & self . temporality
258+ }
259+
260+ pub ( crate ) fn start_unpausing ( & mut self ) {
261+ self . temporality = Temporality :: Unpausing ;
262+ }
263+
264+ pub ( crate ) fn start_pausing ( & mut self ) {
265+ self . temporality = Temporality :: Pausing ;
266+ }
233267
234268 pub ( crate ) fn update_state ( & mut self , state : proto:: instrument:: State ) {
235- self . temporality = proto:: instrument:: Temporality :: try_from ( state. temporality ) . unwrap ( ) ;
269+ self . temporality = proto:: instrument:: Temporality :: try_from ( state. temporality )
270+ . expect ( "invalid temporality" )
271+ . into ( ) ;
236272 }
237273
238274 pub ( crate ) fn is_paused ( & self ) -> bool {
239- matches ! ( self . temporality, proto :: instrument :: Temporality :: Paused )
275+ matches ! ( self . temporality, Temporality :: Paused | Temporality :: Pausing )
240276 }
241277}
242278
0 commit comments