1- use std:: io;
2- use tokio:: io:: { AsyncRead , AsyncWrite } ;
3-
4- use crate :: config:: SessionConfig ;
5- use crate :: message:: FixMessage ;
6- use crate :: session:: SessionRef ;
71use crate :: transport:: socket_reader:: ReaderRef ;
8- use crate :: transport:: socket_writer:: WriterRef ;
9- use crate :: transport:: tcp:: create_tcp_connection;
10- use crate :: transport:: tls:: create_tcp_over_tls_connection;
2+ use crate :: transport:: writer:: WriterRef ;
113
124pub struct FixConnection {
135 _writer : WriterRef ,
146 _reader : ReaderRef ,
157}
168
179impl FixConnection {
18- pub async fn connect (
19- config : & SessionConfig ,
20- session_ref : SessionRef < impl FixMessage > ,
21- ) -> io:: Result < Self > {
22- let use_tls = config. tls_config . is_some ( ) ;
23-
24- let conn = if use_tls {
25- let stream = create_tcp_over_tls_connection ( config) . await ?;
26- _create_io_refs ( session_ref. clone ( ) , stream) . await
27- } else {
28- let stream = create_tcp_connection ( config) . await ?;
29- _create_io_refs ( session_ref. clone ( ) , stream) . await
30- } ;
31-
32- Ok ( conn)
10+ pub fn new ( writer : WriterRef , reader : ReaderRef ) -> Self {
11+ Self {
12+ _writer : writer,
13+ _reader : reader,
14+ }
3315 }
34-
3516 pub fn get_writer ( & self ) -> WriterRef {
3617 self . _writer . clone ( )
3718 }
@@ -40,19 +21,3 @@ impl FixConnection {
4021 self . _reader . wait_for_disconnect ( ) . await
4122 }
4223}
43-
44- async fn _create_io_refs < M , Stream > ( session_ref : SessionRef < M > , stream : Stream ) -> FixConnection
45- where
46- M : FixMessage ,
47- Stream : AsyncRead + AsyncWrite + Send + ' static ,
48- {
49- let ( reader, writer) = tokio:: io:: split ( stream) ;
50-
51- let writer_ref = WriterRef :: new ( writer) ;
52- let reader_ref = ReaderRef :: new ( reader, session_ref) ;
53-
54- FixConnection {
55- _writer : writer_ref,
56- _reader : reader_ref,
57- }
58- }
0 commit comments