Interface DataRecordsWriter<T>
- All Superinterfaces:
DataWriter<T>
- All Known Subinterfaces:
Writer<T>
This interface builds on the lower-level DataWriter abstraction
and adds methods that the SBK harness uses to measure and report write
performance. Implementations should implement the low-level write
operations (see write(DataType, Object, int, Time, Status)) and
may override the default convenience methods provided here to implement
batching, backpressure handling, or driver-specific optimizations.
The interface's default methods provide standard benchmark workloads
such as fixed-count writes, time-based writes, and rate-controlled
writes. These default implementations delegate to recordWrite(DataType, T, int, Time, Status, PerlChannel)
or write(DataType, T, int, Time, Status) and call sync() where appropriate to ensure
durability semantics expected by the harness. Use these helpers to avoid
duplicating common harness logic in drivers.
Implementation notes:
- Returning
nullfromwrite(DataType, Object, int, Time, Status)indicates the write completed synchronously; the default helpers handle this case. - Implement
writeSetTime(DataType, T, int, Time, Status)when your payload can contain an embedded start timestamp so the harness can compute end-to-end latency from the payload's timestamp. - Override
sync()if your driver requires an explicit durability call (e.g., fsync or flush) after batches of writes.
-
Method Summary
Modifier and TypeMethodDescriptiondefault voidRecordsWriter(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time) Default implementation for writer benchmarking by writing given number of records.default voidRecordsWriter(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, WriteRequestsLogger logger) Default implementation for writer benchmarking by writing given number of records.default voidRecordsWriterRO(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, RateController rController) Default implementation for writing given number of records.default voidRecordsWriterRO(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, RateController rController, WriteRequestsLogger logger) Default implementation for writing given number of records.default voidRecordsWriterRW(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, RateController rController) Default implementation for writing given number of records.default voidRecordsWriterRW(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, RateController rController, WriteRequestsLogger logger) Default implementation for writing given number of records.default voidRecordsWriterSync(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, RateController rController) Default implementation for writer benchmarking by writing given number of records.default voidRecordsWriterSync(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, RateController rController, WriteRequestsLogger logger) Default implementation for writer benchmarking by writing given number of records.default voidRecordsWriterTime(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time) Default implementation for writer benchmarking by continuously writing data records for specific time duration.default voidRecordsWriterTime(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, WriteRequestsLogger logger) Default implementation for writer benchmarking by continuously writing data records for specific time duration.default voidRecordsWriterTimeRO(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, RateController rController) Default implementation for writing data records for specific time duration.default voidRecordsWriterTimeRO(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, RateController rController, WriteRequestsLogger logger) Default implementation for writing data records for specific time duration.default voidRecordsWriterTimeRW(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, RateController rController) Default implementation for writing data records for specific time duration.default voidRecordsWriterTimeRW(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, RateController rController, WriteRequestsLogger logger) Default implementation for writing data records for specific time duration.default voidRecordsWriterTimeSync(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, RateController rController) Default implementation for writer benchmarking by continuously writing data records for specific time duration.default voidRecordsWriterTimeSync(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, RateController rController, WriteRequestsLogger logger) Default implementation for writer benchmarking by continuously writing data records for specific time duration.voidrecordWrite(DataType<T> dType, T data, int size, io.time.Time time, Status status, io.perl.api.PerlChannel perlChannel) Write the data and record the benchmark statistics.voidrecordWrite(DataType<T> dType, T data, int size, io.time.Time time, Status status, io.perl.api.PerlChannel perlChannel, int id, WriteRequestsLogger logger) Write the data and record the benchmark statistics.voidsync()Flush / Sync the data.Write the Data and attach the start time to data.write(DataType<T> dType, T data, int size, io.time.Time time, Status status, int id, WriteRequestsLogger logger) Write the Data and attach the start time to data.voidwriteSetTime(DataType<T> dType, T data, int size, io.time.Time time, Status status) Write the Data and attach the start time to data.voidwriteSetTime(DataType<T> dType, T data, int size, io.time.Time time, Status status, int id, WriteRequestsLogger logger) Write the Data and attach the start time to data.Methods inherited from interface DataWriter
close
-
Method Details
-
write
CompletableFuture<?> write(DataType<T> dType, T data, int size, io.time.Time time, Status status) throws IOException Write the Data and attach the start time to data.- Parameters:
dType- Data Type interfacedata- data to writersize- size of the datatime- time interfacestatus- write status to return;Status- Returns:
- CompletableFuture completable future. null if write completed synchronously .
- Throws:
IOException- If an exception occurred.
-
write
CompletableFuture<?> write(DataType<T> dType, T data, int size, io.time.Time time, Status status, int id, WriteRequestsLogger logger) throws IOException Write the Data and attach the start time to data.- Parameters:
dType- Data Type interfacedata- data to writersize- size of the datatime- time interfacestatus- write status to return;Statusid- Writer idlogger- Writer requests logger- Returns:
- CompletableFuture completable future. null if write completed synchronously .
- Throws:
IOException- If an exception occurred.
-
writeSetTime
void writeSetTime(DataType<T> dType, T data, int size, io.time.Time time, Status status) throws IOException Write the Data and attach the start time to data.- Parameters:
dType- Data Type interfacedata- data to writersize- size of the datatime- time interfacestatus- write status to return;Status- Throws:
IOException- If an exception occurred.
-
writeSetTime
void writeSetTime(DataType<T> dType, T data, int size, io.time.Time time, Status status, int id, WriteRequestsLogger logger) throws IOException Write the Data and attach the start time to data.- Parameters:
dType- Data Type interfacedata- data to writersize- size of the datatime- time interfacestatus- write status to return;Statusid- Writer idlogger- Write requests logger- Throws:
IOException- If an exception occurred.
-
sync
Flush / Sync the data.- Throws:
IOException- If an exception occurred.
-
recordWrite
void recordWrite(DataType<T> dType, T data, int size, io.time.Time time, Status status, io.perl.api.PerlChannel perlChannel) throws IOException Write the data and record the benchmark statistics.- Parameters:
dType- Data Type interfacedata- data to writesize- size of the datatime- time interfacestatus- Write status to return;StatusperlChannel- to call for benchmarking- Throws:
IOException- If an exception occurred.
-
recordWrite
void recordWrite(DataType<T> dType, T data, int size, io.time.Time time, Status status, io.perl.api.PerlChannel perlChannel, int id, WriteRequestsLogger logger) throws IOException Write the data and record the benchmark statistics.- Parameters:
dType- Data Type interfacedata- data to writesize- size of the datatime- time interfacestatus- Write status to return;StatusperlChannel- to call for benchmarkingid- Writer idlogger- log write requests- Throws:
IOException- If an exception occurred.
-
RecordsWriter
default void RecordsWriter(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time) throws IOException Default implementation for writer benchmarking by writing given number of records. Write is performed usingrecordWrite(DataType, Object, int, Time, Status, PerlChannel)sync is invoked after writing all the records.- Specified by:
RecordsWriterin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorrecordsCount- Records CountdType- Data Type interfacedata- data to writesize- size of the datatime- time interface- Throws:
IOException- If an exception occurred.
-
RecordsWriter
default void RecordsWriter(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, WriteRequestsLogger logger) throws IOException Default implementation for writer benchmarking by writing given number of records. Write is performed usingrecordWrite(DataType, Object, int, Time, Status, PerlChannel)sync is invoked after writing all the records.- Specified by:
RecordsWriterin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorrecordsCount- Records CountdType- Data Type interfacedata- data to writesize- size of the datatime- time interfacelogger- log write requests- Throws:
IOException- If an exception occurred.
-
RecordsWriterSync
default void RecordsWriterSync(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, RateController rController) throws IOException Default implementation for writer benchmarking by writing given number of records. Write is performed usingrecordWrite(DataType, Object, int, Time, Status, PerlChannel)sync is invoked after writing given set of records.- Specified by:
RecordsWriterSyncin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorrecordsCount- Records CountdType- Data Type interfacedata- data to writesize- size of the datatime- time interfacerController- Rate Controller- Throws:
IOException- If an exception occurred.
-
RecordsWriterSync
default void RecordsWriterSync(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, RateController rController, WriteRequestsLogger logger) throws IOException Default implementation for writer benchmarking by writing given number of records. Write is performed usingrecordWrite(DataType, Object, int, Time, Status, PerlChannel)sync is invoked after writing given set of records.- Specified by:
RecordsWriterSyncin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorrecordsCount- Records CountdType- Data Type interfacedata- data to writesize- size of the datatime- time interfacerController- Rate Controllerlogger- log write requests- Throws:
IOException- If an exception occurred.
-
RecordsWriterTime
default void RecordsWriterTime(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time) throws IOException Default implementation for writer benchmarking by continuously writing data records for specific time duration. Write is performed usingrecordWrite(DataType, Object, int, Time, Status, PerlChannel)sync is invoked after writing records for given time.- Specified by:
RecordsWriterTimein interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorsecondsToRun- Number of seconds to RundType- Data Type interfacedata- data to writesize- size of the datatime- time interface- Throws:
IOException- If an exception occurred.
-
RecordsWriterTime
default void RecordsWriterTime(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, WriteRequestsLogger logger) throws IOException Default implementation for writer benchmarking by continuously writing data records for specific time duration. Write is performed usingrecordWrite(DataType, Object, int, Time, Status, PerlChannel)sync is invoked after writing records for given time.- Specified by:
RecordsWriterTimein interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorsecondsToRun- Number of seconds to RundType- Data Type interfacedata- data to writesize- size of the datatime- time interfacelogger- log write requests- Throws:
IOException- If an exception occurred.
-
RecordsWriterTimeSync
default void RecordsWriterTimeSync(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, RateController rController) throws IOException Default implementation for writer benchmarking by continuously writing data records for specific time duration. Write is performed usingrecordWrite(DataType, Object, int, Time, Status, PerlChannel)sync is invoked after writing given set of records.- Specified by:
RecordsWriterTimeSyncin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorsecondsToRun- Number of seconds to RundType- Data Type interfacedata- data to writesize- size of the datatime- time interfacerController- Rate Controller- Throws:
IOException- If an exception occurred.
-
RecordsWriterTimeSync
default void RecordsWriterTimeSync(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, RateController rController, WriteRequestsLogger logger) throws IOException Default implementation for writer benchmarking by continuously writing data records for specific time duration. Write is performed usingrecordWrite(DataType, Object, int, Time, Status, PerlChannel)sync is invoked after writing given set of records.- Specified by:
RecordsWriterTimeSyncin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorsecondsToRun- Number of seconds to RundType- Data Type interfacedata- data to writesize- size of the datatime- time interfacerController- Rate Controllerlogger- log write requests- Throws:
IOException- If an exception occurred.
-
RecordsWriterRW
default void RecordsWriterRW(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, RateController rController) throws IOException Default implementation for writing given number of records. No Writer Benchmarking is performed. Write is performed usingwriteSetTime(DataType, Object, int, Time, Status). sync is invoked after writing given set of records.- Specified by:
RecordsWriterRWin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorrecordsCount- Records CountdType- Data Type interfacedata- data to writesize- size of the datatime- time interfacerController- Rate Controller- Throws:
IOException- If an exception occurred.
-
RecordsWriterRW
default void RecordsWriterRW(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, RateController rController, WriteRequestsLogger logger) throws IOException Default implementation for writing given number of records. No Writer Benchmarking is performed. Write is performed usingwriteSetTime(DataType, Object, int, Time, Status). sync is invoked after writing given set of records.- Specified by:
RecordsWriterRWin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorrecordsCount- Records CountdType- Data Type interfacedata- data to writesize- size of the datatime- time interfacerController- Rate Controllerlogger- log write requests- Throws:
IOException- If an exception occurred.
-
RecordsWriterTimeRW
default void RecordsWriterTimeRW(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, RateController rController) throws IOException Default implementation for writing data records for specific time duration. No Writer Benchmarking is performed. Write is performed usingwriteSetTime(DataType, Object, int, Time, Status). sync is invoked after writing given set of records.- Specified by:
RecordsWriterTimeRWin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorsecondsToRun- Number of seconds to RundType- Data Type interfacedata- data to writesize- size of the datatime- time interfacerController- Rate Controller- Throws:
IOException- If an exception occurred.
-
RecordsWriterTimeRW
default void RecordsWriterTimeRW(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, RateController rController, WriteRequestsLogger logger) throws IOException Default implementation for writing data records for specific time duration. No Writer Benchmarking is performed. Write is performed usingwriteSetTime(DataType, Object, int, Time, Status). sync is invoked after writing given set of records.- Specified by:
RecordsWriterTimeRWin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorsecondsToRun- Number of seconds to RundType- Data Type interfacedata- data to writesize- size of the datatime- time interfacerController- Rate Controllerlogger- log write requests- Throws:
IOException- If an exception occurred.
-
RecordsWriterRO
default void RecordsWriterRO(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, RateController rController) throws IOException Default implementation for writing given number of records. No Writer Benchmarking is performed. Write is performed usingwrite(DataType, Object, int, Time, Status). sync is invoked after writing given set of records.- Specified by:
RecordsWriterROin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorrecordsCount- Records CountdType- Data Type interfacedata- data to writesize- size of the datatime- time interfacerController- Rate Controller- Throws:
IOException- If an exception occurred.
-
RecordsWriterRO
default void RecordsWriterRO(Worker writer, long recordsCount, DataType<T> dType, T data, int size, io.time.Time time, RateController rController, WriteRequestsLogger logger) throws IOException Default implementation for writing given number of records. No Writer Benchmarking is performed. Write is performed usingwrite(DataType, Object, int, Time, Status). sync is invoked after writing given set of records.- Specified by:
RecordsWriterROin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorrecordsCount- Records CountdType- Data Type interfacedata- data to writesize- size of the datatime- time interfacerController- Rate Controllerlogger- log write requests- Throws:
IOException- If an exception occurred.
-
RecordsWriterTimeRO
default void RecordsWriterTimeRO(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, RateController rController) throws IOException Default implementation for writing data records for specific time duration. No Writer Benchmarking is performed. Write is performed usingwrite(DataType, Object, int, Time, Status). sync is invoked after writing given set of records.- Specified by:
RecordsWriterTimeROin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorsecondsToRun- Number of seconds to RundType- Data Type interfacedata- data to writesize- size of the datatime- time interfacerController- Rate Controller- Throws:
IOException- If an exception occurred.
-
RecordsWriterTimeRO
default void RecordsWriterTimeRO(Worker writer, long secondsToRun, DataType<T> dType, T data, int size, io.time.Time time, RateController rController, WriteRequestsLogger logger) throws IOException Default implementation for writing data records for specific time duration. No Writer Benchmarking is performed. Write is performed usingwrite(DataType, Object, int, Time, Status). sync is invoked after writing given set of records.- Specified by:
RecordsWriterTimeROin interfaceDataWriter<T>- Parameters:
writer- Writer DescriptorsecondsToRun- Number of seconds to RundType- Data Type interfacedata- data to writesize- size of the datatime- time interfacerController- Rate Controllerlogger- log write requests- Throws:
IOException- If an exception occurred.
-