THRIFT-5765 Extra override for WriteBinary() to avoid unnecessary memory allocations when using COM types
Client: Delphi
Patch: JensG
diff --git a/lib/delphi/src/Thrift.Protocol.Compact.pas b/lib/delphi/src/Thrift.Protocol.Compact.pas
index 80f1ce5..a8ad53a 100644
--- a/lib/delphi/src/Thrift.Protocol.Compact.pas
+++ b/lib/delphi/src/Thrift.Protocol.Compact.pas
@@ -176,6 +176,7 @@
procedure WriteI64( const i64: Int64); override;
procedure WriteDouble( const dub: Double); override;
procedure WriteBinary( const b: TBytes); overload; override;
+ procedure WriteBinary( const bytes : IThriftBytes); overload; override;
procedure WriteUuid( const uuid: TGuid); override;
private // unit visible stuff
@@ -542,6 +543,14 @@
Transport.Write( b);
end;
+
+procedure TCompactProtocolImpl.WriteBinary( const bytes : IThriftBytes);
+begin
+ WriteVarint32( Cardinal(bytes.Count));
+ Transport.Write( bytes.QueryRawDataPtr, 0, bytes.Count);
+end;
+
+
procedure TCompactProtocolImpl.WriteUuid( const uuid: TGuid);
var network : TGuid; // in network order (Big Endian)
begin