@@ -32,71 +32,75 @@ impl<T: LlmChatStreamState> LlmChatStream<T> {
3232}
3333
3434impl < T : LlmChatStreamState > GuestChatStream for LlmChatStream < T > {
35- fn poll_next ( & self ) -> Result < Option < Vec < StreamEvent > > , Error > {
35+ fn poll_next ( & self ) -> Option < Vec < Result < StreamEvent , Error > > > {
3636 if self . implementation . is_finished ( ) {
37- return Ok ( Some ( vec ! [ ] ) ) ;
37+ return Some ( vec ! [ ] ) ;
3838 }
3939
4040 let mut stream = self . implementation . stream_mut ( ) ;
4141 if let Some ( stream) = stream. as_mut ( ) {
4242 match stream. poll_next ( ) {
4343 Poll :: Ready ( None ) => {
4444 self . implementation . set_finished ( ) ;
45- Ok ( Some ( vec ! [ ] ) )
45+ Some ( vec ! [ ] )
4646 }
4747 Poll :: Ready ( Some ( Err ( crate :: event_source:: error:: Error :: StreamEnded ) ) ) => {
4848 self . implementation . set_finished ( ) ;
49- Ok ( Some ( vec ! [ ] ) )
49+ Some ( vec ! [ ] )
50+ }
51+ Poll :: Ready ( Some ( Err ( error) ) ) => {
52+ self . implementation . set_finished ( ) ;
53+ Some ( vec ! [ Err ( Error {
54+ code: ErrorCode :: InternalError ,
55+ message: error. to_string( ) ,
56+ provider_error_json: None ,
57+ } ) ] )
5058 }
51- Poll :: Ready ( Some ( Err ( error) ) ) => Err ( Error {
52- code : ErrorCode :: InternalError ,
53- message : error. to_string ( ) ,
54- provider_error_json : None ,
55- } ) ,
5659 Poll :: Ready ( Some ( Ok ( event) ) ) => {
5760 let mut events = vec ! [ ] ;
5861
5962 match event {
6063 Event :: Open => { }
6164 Event :: Message ( MessageEvent { data, .. } ) => {
6265 if data != "[DONE]" {
63- match self . implementation . decode_message ( & data) ? {
64- Some ( stream_event) => {
66+ match self . implementation . decode_message ( & data) {
67+ Ok ( Some ( stream_event) ) => {
6568 if matches ! ( stream_event, StreamEvent :: Finish ( _) ) {
6669 self . implementation . set_finished ( ) ;
6770 }
68- events. push ( stream_event) ;
71+ events. push ( Ok ( stream_event) ) ;
6972 }
70- None => {
73+ Ok ( None ) => {
7174 // Ignored event
7275 }
76+ Err ( err) => events. push ( Err ( err) ) ,
7377 }
7478 }
7579 }
7680 }
7781
7882 if events. is_empty ( ) {
79- Ok ( None )
83+ None
8084 } else {
81- Ok ( Some ( events) )
85+ Some ( events)
8286 }
8387 }
84- Poll :: Pending => Ok ( None ) ,
88+ Poll :: Pending => None ,
8589 }
8690 } else if let Some ( error) = self . implementation . failure ( ) . clone ( ) {
8791 self . implementation . set_finished ( ) ;
88- Err ( error)
92+ Some ( vec ! [ Err ( error) ] )
8993 } else {
90- Ok ( None )
94+ None
9195 }
9296 }
9397
94- fn get_next ( & self ) -> Result < Vec < StreamEvent > , Error > {
98+ fn get_next ( & self ) -> Vec < Result < StreamEvent , Error > > {
9599 let pollable = self . subscribe ( ) ;
96100 loop {
97101 pollable. block ( ) ;
98- if let Some ( events) = self . poll_next ( ) ? {
99- return Ok ( events) ;
102+ if let Some ( events) = self . poll_next ( ) {
103+ return events;
100104 }
101105 }
102106 }
0 commit comments