IFlowClient

Struct IFlowClient 

Source
pub struct IFlowClient { /* private fields */ }
Expand description

Main client for bidirectional communication with iFlow

This client handles the full lifecycle of communication with iFlow, including process management, connection handling, and message passing.

Implementations§

Source§

impl IFlowClient

Source

pub fn new(options: Option<IFlowOptions>) -> Self

Create a new iFlow client

§Arguments
  • options - Optional configuration for the client. If None, defaults will be used.
§Returns

A new IFlowClient instance

Source

pub async fn connect(&mut self) -> Result<()>

Connect to iFlow

Establishes a connection to iFlow, starting the process if auto_start_process is enabled. This method handles all the necessary setup for communication via stdio or WebSocket.

§Returns
  • Ok(()) if the connection was successful
  • Err(IFlowError) if the connection failed
Source

pub async fn send_message( &mut self, text: &str, _files: Option<Vec<&Path>>, ) -> Result<()>

Send a message to iFlow

Sends a text message to iFlow and handles the complete request-response cycle. This method initializes the connection, creates a new session, sends the prompt, and waits for completion before returning.

§Arguments
  • text - The text message to send to iFlow
  • _files - Optional files to send (currently not implemented)
§Returns
  • Ok(()) if the message was sent successfully
  • Err(IFlowError) if there was an error
Source

pub async fn interrupt(&self) -> Result<()>

Interrupt the current message generation

Sends an interrupt signal to stop the current message generation. This is useful for canceling long-running requests.

§Returns
  • Ok(()) if the interrupt was sent successfully
  • Err(IFlowError) if there was an error
Source

pub fn messages(&self) -> MessageStream

Receive messages from iFlow

Returns a stream of messages from iFlow that can be used with async iteration.

§Returns

A MessageStream that implements futures::Stream

Source

pub async fn receive_message(&self) -> Result<Option<Message>>

Receive a single message (convenience method)

Waits for and returns the next message from iFlow.

§Returns
  • Ok(Some(Message)) if a message was received
  • Ok(None) if the channel is closed
  • Err(IFlowError) if there was an error
Source

pub async fn disconnect(&mut self) -> Result<()>

Disconnect from iFlow

Cleans up the connection to iFlow and stops the process if it was started by this client. This method ensures proper cleanup of resources.

§Returns
  • Ok(()) if the disconnection was successful
  • Err(IFlowError) if there was an error

Trait Implementations§

Source§

impl Drop for IFlowClient

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,