vtcode_llm/open_responses/bridge/
emitter.rs1use super::*;
4
5pub struct DualEventEmitter<E: StreamEventEmitter> {
7 open_responses_emitter: E,
8 builder: ResponseBuilder,
9}
10
11impl<E: StreamEventEmitter> DualEventEmitter<E> {
12 pub fn new(emitter: E, model: impl Into<String>) -> Self {
14 Self {
15 open_responses_emitter: emitter,
16 builder: ResponseBuilder::new(model),
17 }
18 }
19
20 pub fn process(&mut self, event: &ThreadEvent) {
22 self.builder.process_event(event, &mut self.open_responses_emitter);
23 }
24
25 pub fn process_normalized(&mut self, event: &NormalizedStreamEvent) {
27 self.builder.process_normalized_event(event, &mut self.open_responses_emitter);
28 }
29
30 pub fn response(&self) -> &Response {
32 self.builder.response()
33 }
34
35 pub fn into_emitter(self) -> E {
37 self.open_responses_emitter
38 }
39
40 pub fn into_response(self) -> Response {
42 self.builder.build()
43 }
44}