Struct SessionSettings

Source
pub struct SessionSettings(/* private fields */);
Expand description

Container for setting dictionaries mapped to sessions.

Implementations§

Source§

impl SessionSettings

Source

pub fn new() -> Self

Create new empty struct.

Examples found in repository?
examples/demo_config.rs (line 21)
20fn build_settings() -> Result<SessionSettings, QuickFixError> {
21    let mut settings = SessionSettings::new();
22
23    settings.set(
24        None,
25        Dictionary::try_from_items(&[
26            &ConnectionType::Acceptor,
27            &ReconnectInterval(60),
28            &FileStorePath("store"),
29        ])?,
30    )?;
31
32    settings.set(
33        Some(&SessionId::try_new("FIX.4.4", "ME", "THEIR", "")?),
34        Dictionary::try_from_items(&[
35            &StartTime("12:30:00"),
36            &EndTime("23:30:00"),
37            &HeartBtInt(20),
38            &SocketAcceptPort(4000),
39            &DataDictionary("quickfix-ffi/libquickfix/spec/FIX41.xml"),
40        ])?,
41    )?;
42
43    Ok(settings)
44}
Source

pub fn try_from_path<P: AsRef<Path>>(path: P) -> Result<Self, QuickFixError>

Try to load struct data from Path.

Examples found in repository?
examples/fix_getting_started.rs (line 28)
20fn main() -> Result<(), QuickFixError> {
21    let args: Vec<_> = env::args().collect();
22    let Some(config_file) = args.get(1) else {
23        eprintln!("Bad program usage: {} <config_file>", args[0]);
24        exit(1);
25    };
26
27    println!(">> Creating resources");
28    let settings = SessionSettings::try_from_path(config_file)?;
29    let store_factory = FileMessageStoreFactory::try_new(&settings)?;
30    let log_factory = LogFactory::try_new(&StdLogger::Stdout)?;
31    let callbacks = MyApplication;
32    let app = Application::try_new(&callbacks)?;
33
34    let mut acceptor = Acceptor::try_new(
35        &settings,
36        &app,
37        &store_factory,
38        &log_factory,
39        FixSocketServerKind::SingleThreaded,
40    )?;
41
42    println!(">> connection handler START");
43    acceptor.start()?;
44
45    println!(">> App running, press 'q' to quit");
46    let mut stdin = stdin().lock();
47    let mut stdin_buf = [0];
48    loop {
49        let _ = stdin.read_exact(&mut stdin_buf);
50        if stdin_buf[0] == b'q' {
51            break;
52        }
53    }
54
55    println!(">> connection handler STOP");
56    acceptor.stop()?;
57
58    println!(">> All cleared. Bye !");
59    Ok(())
60}
More examples
Hide additional examples
examples/fix_repl/main.rs (line 25)
14fn main() -> Result<(), QuickFixError> {
15    let args: Vec<_> = env::args().collect();
16    let (Some(connect_mode), Some(config_file)) = (args.get(1), args.get(2)) else {
17        eprintln!(
18            "Bad program usage: {} [acceptor|initiator] <config_file>",
19            args[0]
20        );
21        exit(1);
22    };
23
24    println!(">> Creating resources");
25    let settings = SessionSettings::try_from_path(config_file)?;
26    let store_factory = FileMessageStoreFactory::try_new(&settings)?;
27    let log_factory = LogFactory::try_new(&StdLogger::Stdout)?;
28    let callbacks = MyApplication::new();
29    let app = Application::try_new(&callbacks)?;
30
31    match connect_mode.as_str() {
32        "initiator" => server_loop(Initiator::try_new(
33            &settings,
34            &app,
35            &store_factory,
36            &log_factory,
37            FixSocketServerKind::SingleThreaded,
38        )?),
39        "acceptor" => server_loop(Acceptor::try_new(
40            &settings,
41            &app,
42            &store_factory,
43            &log_factory,
44            FixSocketServerKind::SingleThreaded,
45        )?),
46        _ => {
47            eprintln!("Invalid connection mode");
48            exit(1);
49        }
50    }?;
51
52    println!(">> All cleared. Bye !");
53    Ok(())
54}
Source

pub fn with_dictionary<T, F>( &self, session_id: Option<&SessionId>, f: F, ) -> Option<T>
where F: FnOnce(&Dictionary) -> T,

Borrow inner dictionary for session or global configuration.

Source

pub fn set( &mut self, session_id: Option<&SessionId>, value: Dictionary, ) -> Result<(), QuickFixError>

Set dictionary parameter for session or global configuration.

Examples found in repository?
examples/demo_config.rs (lines 23-30)
20fn build_settings() -> Result<SessionSettings, QuickFixError> {
21    let mut settings = SessionSettings::new();
22
23    settings.set(
24        None,
25        Dictionary::try_from_items(&[
26            &ConnectionType::Acceptor,
27            &ReconnectInterval(60),
28            &FileStorePath("store"),
29        ])?,
30    )?;
31
32    settings.set(
33        Some(&SessionId::try_new("FIX.4.4", "ME", "THEIR", "")?),
34        Dictionary::try_from_items(&[
35            &StartTime("12:30:00"),
36            &EndTime("23:30:00"),
37            &HeartBtInt(20),
38            &SocketAcceptPort(4000),
39            &DataDictionary("quickfix-ffi/libquickfix/spec/FIX41.xml"),
40        ])?,
41    )?;
42
43    Ok(settings)
44}

Trait Implementations§

Source§

impl Debug for SessionSettings

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SessionSettings

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Drop for SessionSettings

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.