prepareBatchBody method
Prepares the batch body bytes for sending.
Override this for custom serialization (e.g., gzip compression). The default implementation JSON-encodes the batch.
Returns a record with body bytes and optional extra headers.
Implementation
@override
Future<({List<int> body, Map<String, String> extraHeaders})> prepareBatchBody(
List<Map<String, dynamic>> batch,
) async {
if (useIsolate) {
try {
final prepared = await isolateManager.prepareBatch(
batch: batch,
compress: enableCompression,
);
final body = (prepared['body'] as List).cast<int>();
final extraHeaders = <String, String>{};
if (prepared['isCompressed'] == true) {
extraHeaders['Content-Encoding'] = 'gzip';
}
return (body: body, extraHeaders: extraHeaders);
} catch (_) {
// Fallback to direct processing
}
}
final jsonBody = jsonEncode(batch);
final extraHeaders = <String, String>{};
if (enableCompression) {
final encoder = GZipCodec();
extraHeaders['Content-Encoding'] = 'gzip';
return (
body: encoder.encode(utf8.encode(jsonBody)),
extraHeaders: extraHeaders,
);
}
return (body: utf8.encode(jsonBody), extraHeaders: extraHeaders);
}