@@ -559,6 +559,189 @@ impl TOutputProtocol for TBinaryProtocol<&mut LinkedBytes> {
559559 }
560560}
561561
562+ impl < ' a > TOutputProtocol for TBinaryProtocol < & ' a mut [ u8 ] > {
563+ type BufMut = & ' a mut [ u8 ] ;
564+
565+ #[ inline]
566+ fn write_message_begin (
567+ & mut self ,
568+ identifier : & TMessageIdentifier ,
569+ ) -> Result < ( ) , ThriftException > {
570+ let msg_type_u8: u8 = identifier. message_type . into ( ) ;
571+ let version = ( VERSION_1 | msg_type_u8 as u32 ) as i32 ;
572+ self . write_i32 ( version) ?;
573+ self . write_faststr ( identifier. name . clone ( ) ) ?;
574+ self . write_i32 ( identifier. sequence_number ) ?;
575+ Ok ( ( ) )
576+ }
577+
578+ #[ inline]
579+ fn write_message_end ( & mut self ) -> Result < ( ) , ThriftException > {
580+ Ok ( ( ) )
581+ }
582+
583+ #[ inline]
584+ fn write_struct_begin ( & mut self , _: & TStructIdentifier ) -> Result < ( ) , ThriftException > {
585+ Ok ( ( ) )
586+ }
587+
588+ #[ inline]
589+ fn write_struct_end ( & mut self ) -> Result < ( ) , ThriftException > {
590+ Ok ( ( ) )
591+ }
592+
593+ #[ inline]
594+ fn write_field_begin ( & mut self , field_type : TType , id : i16 ) -> Result < ( ) , ThriftException > {
595+ let mut data: [ u8 ; 3 ] = [ 0 ; 3 ] ;
596+ data[ 0 ] = field_type as u8 ;
597+ let id = id. to_be_bytes ( ) ;
598+ data[ 1 ] = id[ 0 ] ;
599+ data[ 2 ] = id[ 1 ] ;
600+ self . trans . write_slice ( & data) ;
601+ Ok ( ( ) )
602+ }
603+
604+ #[ inline]
605+ fn write_field_end ( & mut self ) -> Result < ( ) , ThriftException > {
606+ Ok ( ( ) )
607+ }
608+
609+ #[ inline]
610+ fn write_field_stop ( & mut self ) -> Result < ( ) , ThriftException > {
611+ self . write_byte ( TType :: Stop as u8 )
612+ }
613+
614+ #[ inline]
615+ fn write_bool ( & mut self , b : bool ) -> Result < ( ) , ThriftException > {
616+ if b {
617+ self . write_i8 ( 1 )
618+ } else {
619+ self . write_i8 ( 0 )
620+ }
621+ }
622+
623+ #[ inline]
624+ fn write_bytes ( & mut self , b : Bytes ) -> Result < ( ) , ThriftException > {
625+ self . write_i32 ( b. len ( ) as i32 ) ?;
626+ self . write_bytes_without_len ( b)
627+ }
628+
629+ #[ inline]
630+ fn write_bytes_without_len ( & mut self , b : Bytes ) -> Result < ( ) , ThriftException > {
631+ self . trans . write_slice ( & b) ;
632+ Ok ( ( ) )
633+ }
634+
635+ #[ inline]
636+ fn write_byte ( & mut self , b : u8 ) -> Result < ( ) , ThriftException > {
637+ self . trans . write_u8 ( b) ;
638+ Ok ( ( ) )
639+ }
640+
641+ #[ inline]
642+ fn write_uuid ( & mut self , u : [ u8 ; 16 ] ) -> Result < ( ) , ThriftException > {
643+ self . trans . write_slice ( & u) ;
644+ Ok ( ( ) )
645+ }
646+
647+ #[ inline]
648+ fn write_i8 ( & mut self , i : i8 ) -> Result < ( ) , ThriftException > {
649+ self . trans . write_i8 ( i) ;
650+ Ok ( ( ) )
651+ }
652+
653+ #[ inline]
654+ fn write_i16 ( & mut self , i : i16 ) -> Result < ( ) , ThriftException > {
655+ self . trans . write_i16 ( i) ;
656+ Ok ( ( ) )
657+ }
658+
659+ #[ inline]
660+ fn write_i32 ( & mut self , i : i32 ) -> Result < ( ) , ThriftException > {
661+ self . trans . write_i32 ( i) ;
662+ Ok ( ( ) )
663+ }
664+
665+ #[ inline]
666+ fn write_i64 ( & mut self , i : i64 ) -> Result < ( ) , ThriftException > {
667+ self . trans . write_i64 ( i) ;
668+ Ok ( ( ) )
669+ }
670+
671+ #[ inline]
672+ fn write_double ( & mut self , d : f64 ) -> Result < ( ) , ThriftException > {
673+ self . trans . write_f64 ( d) ;
674+ Ok ( ( ) )
675+ }
676+
677+ #[ inline]
678+ fn write_string ( & mut self , s : & str ) -> Result < ( ) , ThriftException > {
679+ self . write_i32 ( s. len ( ) as i32 ) ?;
680+ self . trans . write_slice ( s. as_bytes ( ) ) ;
681+ Ok ( ( ) )
682+ }
683+
684+ #[ inline]
685+ fn write_faststr ( & mut self , s : FastStr ) -> Result < ( ) , ThriftException > {
686+ self . write_i32 ( s. len ( ) as i32 ) ?;
687+ self . trans . write_slice ( s. as_ref ( ) ) ;
688+ Ok ( ( ) )
689+ }
690+
691+ #[ inline]
692+ fn write_list_begin ( & mut self , identifier : TListIdentifier ) -> Result < ( ) , ThriftException > {
693+ self . write_byte ( identifier. element_type . into ( ) ) ?;
694+ self . write_i32 ( identifier. size as i32 )
695+ }
696+
697+ #[ inline]
698+ fn write_list_end ( & mut self ) -> Result < ( ) , ThriftException > {
699+ Ok ( ( ) )
700+ }
701+
702+ #[ inline]
703+ fn write_set_begin ( & mut self , identifier : TSetIdentifier ) -> Result < ( ) , ThriftException > {
704+ self . write_byte ( identifier. element_type . into ( ) ) ?;
705+ self . write_i32 ( identifier. size as i32 )
706+ }
707+
708+ #[ inline]
709+ fn write_set_end ( & mut self ) -> Result < ( ) , ThriftException > {
710+ Ok ( ( ) )
711+ }
712+
713+ #[ inline]
714+ fn write_map_begin ( & mut self , identifier : TMapIdentifier ) -> Result < ( ) , ThriftException > {
715+ let key_type = identifier. key_type ;
716+ self . write_byte ( key_type. into ( ) ) ?;
717+ let val_type = identifier. value_type ;
718+ self . write_byte ( val_type. into ( ) ) ?;
719+ self . write_i32 ( identifier. size as i32 )
720+ }
721+
722+ #[ inline]
723+ fn write_map_end ( & mut self ) -> Result < ( ) , ThriftException > {
724+ Ok ( ( ) )
725+ }
726+
727+ #[ inline]
728+ fn flush ( & mut self ) -> Result < ( ) , ThriftException > {
729+ Ok ( ( ) )
730+ }
731+
732+ #[ inline]
733+ fn write_bytes_vec ( & mut self , b : & [ u8 ] ) -> Result < ( ) , ThriftException > {
734+ self . write_i32 ( b. len ( ) as i32 ) ?;
735+ self . trans . write_slice ( b) ;
736+ Ok ( ( ) )
737+ }
738+
739+ #[ inline]
740+ fn buf_mut ( & mut self ) -> & mut Self :: BufMut {
741+ & mut self . trans
742+ }
743+ }
744+
562745impl TInputProtocol for TBinaryProtocol < & mut Bytes > {
563746 type Buf = Bytes ;
564747
0 commit comments