@@ -20,6 +20,7 @@ use crate::Application;
2020use crate :: application:: { InboundDecision , OutboundDecision } ;
2121use crate :: config:: SessionConfig ;
2222use crate :: message:: OutboundMessage ;
23+ use crate :: message:: generate_message;
2324use crate :: message:: heartbeat:: Heartbeat ;
2425use crate :: message:: logon:: { Logon , ResetSeqNumConfig } ;
2526use crate :: message:: logout:: Logout ;
@@ -30,7 +31,6 @@ use crate::message::sequence_reset::SequenceReset;
3031use crate :: message:: test_request:: TestRequest ;
3132use crate :: message:: verification:: verify_message;
3233use crate :: message:: verification_error:: { CompIdType , MessageVerificationError } ;
33- use crate :: message:: { InboundMessage , generate_message} ;
3434use crate :: message_utils:: { is_admin, prepare_message_for_resend} ;
3535use crate :: session:: admin_request:: AdminRequest ;
3636use crate :: session:: error:: SessionCreationError ;
@@ -57,7 +57,7 @@ use hotfix_message::session_fields::{
5757
5858const SCHEDULE_CHECK_INTERVAL : u64 = 1 ;
5959
60- struct Session < A , I , O , S > {
60+ struct Session < A , O , S > {
6161 message_config : MessageConfig ,
6262 config : SessionConfig ,
6363 schedule : SessionSchedule ,
@@ -67,21 +67,20 @@ struct Session<A, I, O, S> {
6767 store : S ,
6868 schedule_check_timer : Pin < Box < Sleep > > ,
6969 reset_on_next_logon : bool ,
70- _phantom : std:: marker:: PhantomData < fn ( ) -> ( I , O ) > ,
70+ _phantom : std:: marker:: PhantomData < fn ( ) -> O > ,
7171}
7272
73- impl < App , Inbound , Outbound , Store > Session < App , Inbound , Outbound , Store >
73+ impl < App , Outbound , Store > Session < App , Outbound , Store >
7474where
75- App : Application < Inbound , Outbound > ,
76- Inbound : InboundMessage ,
75+ App : Application < Outbound > ,
7776 Outbound : OutboundMessage ,
7877 Store : MessageStore ,
7978{
8079 fn new (
8180 config : SessionConfig ,
8281 application : App ,
8382 store : Store ,
84- ) -> Result < Session < App , Inbound , Outbound , Store > , SessionCreationError > {
83+ ) -> Result < Session < App , Outbound , Store > , SessionCreationError > {
8584 let schedule_check_timer = sleep ( Duration :: from_secs ( SCHEDULE_CHECK_INTERVAL ) ) ;
8685
8786 let dictionary = Self :: get_data_dictionary ( & config) ?;
@@ -245,9 +244,8 @@ where
245244 ) -> Result < ( ) , SessionOperationError > {
246245 match self . verify_message ( message, true ) {
247246 Ok ( _) => {
248- let parsed_message = Inbound :: parse ( message) ;
249247 if matches ! (
250- self . application. on_inbound_message( parsed_message ) . await ,
248+ self . application. on_inbound_message( message ) . await ,
251249 InboundDecision :: TerminateSession
252250 ) {
253251 error ! ( "failed to send inbound message to application" ) ;
@@ -1131,14 +1129,13 @@ fn get_msg_seq_num(message: &Message) -> u64 {
11311129 . expect ( "MsgSeqNum missing from validated message - parser bug" )
11321130}
11331131
1134- async fn run_session < App , Inbound , Outbound , Store > (
1135- mut session : Session < App , Inbound , Outbound , Store > ,
1132+ async fn run_session < App , Outbound , Store > (
1133+ mut session : Session < App , Outbound , Store > ,
11361134 mut event_receiver : mpsc:: Receiver < SessionEvent > ,
11371135 mut outbound_message_receiver : mpsc:: Receiver < OutboundRequest < Outbound > > ,
11381136 mut admin_request_receiver : mpsc:: Receiver < AdminRequest > ,
11391137) where
1140- App : Application < Inbound , Outbound > ,
1141- Inbound : InboundMessage ,
1138+ App : Application < Outbound > ,
11421139 Outbound : OutboundMessage ,
11431140 Store : MessageStore + Send + ' static ,
11441141{
@@ -1196,7 +1193,7 @@ async fn run_session<App, Inbound, Outbound, Store>(
11961193mod tests {
11971194 use super :: * ;
11981195 use crate :: application:: { InboundDecision , OutboundDecision } ;
1199- use crate :: message:: { InboundMessage , OutboundMessage } ;
1196+ use crate :: message:: OutboundMessage ;
12001197 use crate :: store:: { Result as StoreResult , StoreError } ;
12011198 use chrono:: { DateTime , Datelike , NaiveDate , NaiveTime , TimeDelta , Timelike } ;
12021199 use chrono_tz:: Tz ;
@@ -1293,21 +1290,15 @@ mod tests {
12931290 }
12941291 }
12951292
1296- impl InboundMessage for DummyMessage {
1297- fn parse ( _message : & Message ) -> Self {
1298- DummyMessage
1299- }
1300- }
1301-
13021293 /// Minimal no-op application for testing
13031294 struct NoOpApp ;
13041295
13051296 #[ async_trait:: async_trait]
1306- impl Application < DummyMessage , DummyMessage > for NoOpApp {
1297+ impl Application < DummyMessage > for NoOpApp {
13071298 async fn on_outbound_message ( & self , _: & DummyMessage ) -> OutboundDecision {
13081299 OutboundDecision :: Send
13091300 }
1310- async fn on_inbound_message ( & self , _: DummyMessage ) -> InboundDecision {
1301+ async fn on_inbound_message ( & self , _: & Message ) -> InboundDecision {
13111302 InboundDecision :: Accept
13121303 }
13131304 async fn on_logout ( & mut self , _: & str ) { }
@@ -1341,7 +1332,7 @@ mod tests {
13411332 schedule : SessionSchedule ,
13421333 state : SessionState ,
13431334 store : TestStore ,
1344- ) -> Session < NoOpApp , DummyMessage , DummyMessage , TestStore > {
1335+ ) -> Session < NoOpApp , DummyMessage , TestStore > {
13451336 let config = create_test_config ( ) ;
13461337 let message_config = MessageConfig :: default ( ) ;
13471338 let dictionary = Dictionary :: fix44 ( ) ;
0 commit comments