public void Send(OutBlob stream) { stream.BeginPacket(PacketId); stream.BeginBitAccess(); GenericEntityUpdateWriter.WriteIntoPacket(stream, _syncSegments, _initializeSegments, _flagSegments, NumIdBits, MaxIdValue); stream.EndPacket(); }
public static void WriteIntoPacket(OutBlob stream, [NotNull] IEnumerable <IUpdateSegment> syncSegments, [NotNull] IEnumerable <IUpdateSegment> initializeSegments, [NotNull] IEnumerable <IUpdateSegment> flagSegments, int numIdBits, int maxIdValue) { stream.BeginBitAccess(); WriteSyncSegments(stream, syncSegments); WriteInitSegments(stream, initializeSegments); // avoid double enumeration of the flagSegments enumerable var enumeratedUpdateSegments = flagSegments as IList <IUpdateSegment> ?? flagSegments.ToList(); WriteInitSegmentsEndMarkerIfNeeded(stream, enumeratedUpdateSegments, numIdBits, maxIdValue); stream.EndBitAccess(); WriteFlagSegments(stream, enumeratedUpdateSegments); }