sendEvents method
Implementation
Future sendEvents(List<RawEvent> events) async {
if (events.isEmpty) {
return;
}
final List<List<RawEvent>> chunkedEvents = chunk(events,
analytics?.state.configuration.state.maxBatchSize ?? maxEventsPerBatch,
maxKB: maxPayloadSizeInKb);
final List<RawEvent> sentEvents = [];
var numFailedEvents = 0;
await Future.forEach(chunkedEvents, (batch) async {
try {
final succeeded = await analytics?.httpClient.startBatchUpload(
analytics!.state.configuration.state.writeKey, batch,
host: _apiHost);
if (succeeded == null || !succeeded) {
numFailedEvents += batch.length;
}
sentEvents.addAll(batch);
} catch (e) {
numFailedEvents += batch.length;
} finally {
_queuePlugin.dequeue(sentEvents);
}
});
if (sentEvents.isNotEmpty) {
log("Sent ${sentEvents.length} events", kind: LogFilterKind.debug);
}
if (numFailedEvents > 0) {
log("Failed to send $numFailedEvents events", kind: LogFilterKind.error);
}
return;
}