use super::*;
pub struct DualEventEmitter<E: StreamEventEmitter> {
open_responses_emitter: E,
builder: ResponseBuilder,
}
impl<E: StreamEventEmitter> DualEventEmitter<E> {
pub fn new(emitter: E, model: impl Into<String>) -> Self {
Self {
open_responses_emitter: emitter,
builder: ResponseBuilder::new(model),
}
}
pub fn process(&mut self, event: &ThreadEvent) {
self.builder.process_event(event, &mut self.open_responses_emitter);
}
pub fn process_normalized(&mut self, event: &NormalizedStreamEvent) {
self.builder.process_normalized_event(event, &mut self.open_responses_emitter);
}
pub fn response(&self) -> &Response {
self.builder.response()
}
pub fn into_emitter(self) -> E {
self.open_responses_emitter
}
pub fn into_response(self) -> Response {
self.builder.build()
}
}