@@ -46,8 +46,9 @@ fn routeGrpcMethod(allocator: std.mem.Allocator, request: *std.http.Server.Reque
4646 log .info ("gRPC method: {s}" , .{method });
4747
4848 // Read request body (gRPC frame)
49- var body_reader = try request .reader ();
50- const body = try body_reader .readAllAlloc (allocator , 10 * 1024 * 1024 );
49+ var read_buf : [65536 ]u8 = undefined ;
50+ const body_reader = try request .readerExpectContinue (& read_buf );
51+ const body = try body_reader .adaptToOldInterface ().readAllAlloc (allocator , 10 * 1024 * 1024 );
5152 defer allocator .free (body );
5253
5354 // Parse gRPC frame: 1 byte compression + 4 bytes length + message
@@ -99,23 +100,24 @@ fn routeGrpcMethod(allocator: std.mem.Allocator, request: *std.http.Server.Reque
99100// =============================================================================
100101
101102const ProtobufEncoder = struct {
102- buffer : std .ArrayList (u8 ),
103+ buffer : std .ArrayList (u8 ) = .empty ,
104+ allocator : std.mem.Allocator ,
103105
104106 fn init (allocator : std.mem.Allocator ) ProtobufEncoder {
105- return .{ .buffer = std . ArrayList ( u8 ). init ( allocator ) };
107+ return .{ .allocator = allocator };
106108 }
107109
108110 fn deinit (self : * ProtobufEncoder ) void {
109- self .buffer .deinit ();
111+ self .buffer .deinit (self . allocator );
110112 }
111113
112114 fn writeVarint (self : * ProtobufEncoder , value : u64 ) ! void {
113115 var v = value ;
114116 while (v >= 0x80 ) {
115- try self .buffer .append (@as (u8 , @truncate (v )) | 0x80 );
117+ try self .buffer .append (self . allocator , @as (u8 , @truncate (v )) | 0x80 );
116118 v >>= 7 ;
117119 }
118- try self .buffer .append (@as (u8 , @truncate (v )));
120+ try self .buffer .append (self . allocator , @as (u8 , @truncate (v )));
119121 }
120122
121123 fn writeTag (self : * ProtobufEncoder , field : u32 , wire_type : u3 ) ! void {
@@ -125,7 +127,7 @@ const ProtobufEncoder = struct {
125127 fn writeString (self : * ProtobufEncoder , field : u32 , value : []const u8 ) ! void {
126128 try self .writeTag (field , 2 ); // Length-delimited
127129 try self .writeVarint (value .len );
128- try self .buffer .appendSlice (value );
130+ try self .buffer .appendSlice (self . allocator , value );
129131 }
130132
131133 fn writeInt64 (self : * ProtobufEncoder , field : u32 , value : i64 ) ! void {
@@ -156,13 +158,13 @@ const ProtobufEncoder = struct {
156158 fn writeBytes (self : * ProtobufEncoder , field : u32 , value : []const u8 ) ! void {
157159 try self .writeTag (field , 2 ); // Length-delimited
158160 try self .writeVarint (value .len );
159- try self .buffer .appendSlice (value );
161+ try self .buffer .appendSlice (self . allocator , value );
160162 }
161163
162164 fn writeMessage (self : * ProtobufEncoder , field : u32 , msg : []const u8 ) ! void {
163165 try self .writeTag (field , 2 ); // Length-delimited
164166 try self .writeVarint (msg .len );
165- try self .buffer .appendSlice (msg );
167+ try self .buffer .appendSlice (self . allocator , msg );
166168 }
167169
168170 fn finish (self : * ProtobufEncoder ) []const u8 {
@@ -356,9 +358,8 @@ fn handleCreateCollection(allocator: std.mem.Allocator, request: *std.http.Serve
356358
357359 bridge .createCollection (name , schema ) catch | err | {
358360 log .err ("CreateCollection failed: {}" , .{err });
359- const msg = switch (err ) {
361+ const msg : [] const u8 = switch (err ) {
360362 error .NotImplemented = > "Collection creation not yet implemented" ,
361- else = > "Failed to create collection" ,
362363 };
363364 try sendGrpcError (allocator , request , 12 , msg );
364365 return ;
@@ -433,15 +434,11 @@ fn handleDiscoverDependencies(allocator: std.mem.Allocator, request: *std.http.S
433434
434435 const deps = bridge .discoverDependencies (collection , sample_size ) catch | err | {
435436 log .err ("DiscoverDependencies failed for {s}: {}" , .{ collection , err });
436- const msg = switch (err ) {
437+ const msg : [] const u8 = switch (err ) {
437438 error .NotImplemented = > "Dependency discovery not yet implemented in bridge" ,
438- error .NotInitialized = > "Database not initialized" ,
439- else = > "Failed to discover dependencies" ,
440439 };
441- // gRPC status 12 = UNIMPLEMENTED for NotImplemented, 13 = INTERNAL otherwise
442440 const code : u8 = switch (err ) {
443441 error .NotImplemented = > 12 ,
444- else = > 13 ,
445442 };
446443 try sendGrpcError (allocator , request , code , msg );
447444 return ;
@@ -466,7 +463,7 @@ fn handleDiscoverDependencies(allocator: std.mem.Allocator, request: *std.http.S
466463 // Encode confidence as fixed32 (IEEE 754 float)
467464 try dep_encoder .writeTag (3 , 5 ); // wire type 5 = 32-bit
468465 const conf_bits : u32 = @bitCast (dep .confidence );
469- try dep_encoder .buffer .appendSlice (& std .mem .toBytes (conf_bits ));
466+ try dep_encoder .buffer .appendSlice (dep_encoder . allocator , & std .mem .toBytes (conf_bits ));
470467 try encoder .writeMessage (2 , dep_encoder .finish ());
471468 }
472469
@@ -493,14 +490,11 @@ fn handleAnalyzeNormalForm(allocator: std.mem.Allocator, request: *std.http.Serv
493490
494491 const analysis = bridge .analyzeNormalForm (collection ) catch | err | {
495492 log .err ("AnalyzeNormalForm failed for {s}: {}" , .{ collection , err });
496- const msg = switch (err ) {
493+ const msg : [] const u8 = switch (err ) {
497494 error .NotImplemented = > "Normal form analysis not yet implemented in bridge" ,
498- error .NotInitialized = > "Database not initialized" ,
499- else = > "Failed to analyze normal form" ,
500495 };
501496 const code : u8 = switch (err ) {
502497 error .NotImplemented = > 12 ,
503- else = > 13 ,
504498 };
505499 try sendGrpcError (allocator , request , code , msg );
506500 return ;
@@ -566,14 +560,11 @@ fn handleStartMigration(allocator: std.mem.Allocator, request: *std.http.Server.
566560
567561 const migration = bridge .startMigration (collection , target_schema ) catch | err | {
568562 log .err ("StartMigration failed for {s}: {}" , .{ collection , err });
569- const msg = switch (err ) {
563+ const msg : [] const u8 = switch (err ) {
570564 error .NotImplemented = > "Migration not yet implemented in bridge" ,
571- error .NotInitialized = > "Database not initialized" ,
572- else = > "Failed to start migration" ,
573565 };
574566 const code : u8 = switch (err ) {
575567 error .NotImplemented = > 12 ,
576- else = > 13 ,
577568 };
578569 try sendGrpcError (allocator , request , code , msg );
579570 return ;
0 commit comments