@@ -31,7 +31,7 @@ use crate::message::sequence_reset::SequenceReset;
3131use crate :: message:: test_request:: TestRequest ;
3232use crate :: message_utils:: is_admin;
3333use crate :: session:: event:: AwaitingActiveSessionResponse ;
34- use crate :: session:: state:: { ActiveState , AwaitingResendState } ;
34+ use crate :: session:: state:: AwaitingResendState ;
3535use crate :: session_schedule:: SessionSchedule ;
3636use event:: SessionEvent ;
3737use hotfix_message:: parsed_message:: ParsedMessage ;
@@ -253,12 +253,8 @@ impl<M: FixMessage, S: MessageStore> Session<M, S> {
253253 async fn check_end_of_resend ( & mut self ) -> Result < ( ) > {
254254 let ended_state = if let SessionState :: AwaitingResend ( state) = & mut self . state {
255255 if self . store . next_target_seq_number ( ) > state. end_seq_number {
256- let new_state = SessionState :: Active ( ActiveState {
257- writer : state. writer . clone ( ) ,
258- heartbeat_timer : Box :: pin ( sleep ( Duration :: from_secs (
259- self . config . heartbeat_interval ,
260- ) ) ) ,
261- } ) ;
256+ let new_state =
257+ SessionState :: new_active ( state. writer . clone ( ) , self . config . heartbeat_interval ) ;
262258 Some ( std:: mem:: replace ( & mut self . state , new_state) )
263259 } else {
264260 None
@@ -356,12 +352,8 @@ impl<M: FixMessage, S: MessageStore> Session<M, S> {
356352 match self . verify_message ( message) . await {
357353 Ok ( _) => {
358354 // happy logon flow, the session is now active
359- self . state = SessionState :: Active ( ActiveState {
360- writer : writer. clone ( ) ,
361- heartbeat_timer : Box :: pin ( sleep ( Duration :: from_secs (
362- self . config . heartbeat_interval ,
363- ) ) ) ,
364- } )
355+ self . state =
356+ SessionState :: new_active ( writer. clone ( ) , self . config . heartbeat_interval ) ;
365357 }
366358 Err ( err) => match err {
367359 MessageVerificationError :: SeqNumberTooLow { actual, expected } => {
@@ -746,7 +738,7 @@ where
746738 }
747739 }
748740 ( ) = async {
749- if let Some ( ref mut timer) = session. state. heartbeat_timer( ) {
741+ if let Some ( timer) = session. state. heartbeat_timer( ) {
750742 timer. as_mut( ) . await
751743 } else {
752744 std:: future:: pending( ) . await
0 commit comments