composeRecordArray<T extends IRecord> static method
DC
composeRecordArray<T extends IRecord>(
- List<
T> ? records, - DistributedConnection connection, [
- bool prependLength = false
Implementation
static DC composeRecordArray<T extends IRecord>(
List<T>? records, DistributedConnection connection,
[bool prependLength = false]) {
if (records == null) // || records.length == 0)
return prependLength ? new DC(4) : new DC(0);
var rt = new BinaryList();
var comparsion = records.length == 0
? RecordComparisonResult.Empty
: compareRecords(null, records[0]);
//var type = records.getType().GetElementType();
var isTyped = T == IRecord; // != typeof(IRecord);
if (isTyped) {
var template = Warehouse.getTemplateByType(T);
//if (template != null) {
// typed array ... no need to add class id , it will be included at the first entry
rt.addUint8(0x10 | comparsion);
rt.addGuid(template.classId);
//} else // something wrong
//{
// throw new Exception("Template for type `${T}` not found.");
//}
if (comparsion == RecordComparisonResult.Record)
rt.addDC(composeRecord(records[0], connection, false, true));
for (var i = 1; i < records.length; i++) {
comparsion = compareRecords(records[i - 1], records[i]);
rt.addUint8(comparsion);
if (comparsion == RecordComparisonResult.RecordSameType ||
comparsion == RecordComparisonResult.Record)
rt.addDC(composeRecord(records[i], connection, false, true));
}
} else {
rt.addUint8(comparsion);
if (comparsion == RecordComparisonResult.Record)
rt.addDC(composeRecord(records[0], connection, true, true));
for (var i = 1; i < records.length; i++) {
comparsion = compareRecords(records[i - 1], records[i]);
rt.addUint8(comparsion);
if (comparsion == RecordComparisonResult.Record)
rt.addDC(composeRecord(records[i], connection, true, true));
else if (comparsion == RecordComparisonResult.RecordSameType)
rt.addDC(composeRecord(records[i], connection, false, true));
}
}
if (prependLength) rt.insertInt32(0, rt.length);
return rt.toDC();
// if (records == null || records?.length == 0)
// return prependLength ? new DC(4) : new DC(0);
// var rt = new BinaryList();
// var comparsion = compareRecords(null, records[0]);
// rt.addUint8(comparsion);
// if (comparsion == RecordComparisonResult.Record)
// rt.addDC(composeRecord(records[0], connection, true, true));
// for (var i = 1; i < records.length; i++) {
// comparsion = compareRecords(records[i - 1], records[i]);
// rt.addUint8(comparsion);
// if (comparsion == RecordComparisonResult.Record)
// rt.addDC(composeRecord(records[i], connection, true, true));
// else if (comparsion == RecordComparisonResult.RecordSameType)
// rt.addDC(composeRecord(records[i], connection, false, true));
// }
// if (prependLength) rt.insertInt32(0, rt.length);
// return rt.toDC();
}