You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Introduce the SolidSyslogBlockDevice abstraction so BlockSequence (internal to FileStore) sits on top of a swappable block I/O driver instead of SolidSyslogFile directly. Behaviour preserved at the message/store level — integrator-observable behaviour is unchanged once wiring is updated.
New public surface:
Core/Interface/SolidSyslogBlockDevice.h — _Acquire / _Dispose / _Exists / _Read / _Append / _WriteAt / _Size consumer API. See E18: Flash Storage Support #112 for the illustrative shape.
Core/Interface/SolidSyslogBlockDeviceDefinition.h — vtable struct (extension point for integrator-supplied drivers, e.g. flash).
Storage injection per CLAUDE.md "Callback Conventions": SolidSyslogFileBlockDeviceStorage opaque blob.
Wiring change:SolidSyslogFileStoreConfig replaces readFile / writeFile / pathPrefix with a single struct SolidSyslogBlockDevice* blockDevice field. The integrator now constructs SolidSyslogFileBlockDevice separately and passes it in.
Acceptance criteria
BDD scenarios
No regression — all pre-existing FileStore BDD scenarios remain green after step definitions are updated to wire SolidSyslogFileBlockDevice between the file handles and the FileStore.
Dispose only on capacity pressure — Given a workload that does not hit capacity, When the system runs, Then no Dispose occurs (block files are not deleted until rotation forces it). Confirms behaviour is preserved from the pre-S18.02 baseline.
Docs and header surface
New headers added: SolidSyslogBlockDevice.h, SolidSyslogBlockDeviceDefinition.h, SolidSyslogFileBlockDevice.h.
Parent epic: #112 (E18: Flash Storage Support)
Scope
Introduce the
SolidSyslogBlockDeviceabstraction soBlockSequence(internal to FileStore) sits on top of a swappable block I/O driver instead ofSolidSyslogFiledirectly. Behaviour preserved at the message/store level — integrator-observable behaviour is unchanged once wiring is updated.New public surface:
Core/Interface/SolidSyslogBlockDevice.h—_Acquire/_Dispose/_Exists/_Read/_Append/_WriteAt/_Sizeconsumer API. See E18: Flash Storage Support #112 for the illustrative shape.Core/Interface/SolidSyslogBlockDeviceDefinition.h— vtable struct (extension point for integrator-supplied drivers, e.g. flash).Core/Interface/SolidSyslogFileBlockDevice.h— file-backed driver. WrapsSolidSyslogFile*instances with sequence-numbered filenames. Acquire = "create empty file"; Dispose = "delete file" — preserves current behaviour.CLAUDE.md"Callback Conventions":SolidSyslogFileBlockDeviceStorageopaque blob.Wiring change:
SolidSyslogFileStoreConfigreplacesreadFile/writeFile/pathPrefixwith a singlestruct SolidSyslogBlockDevice* blockDevicefield. The integrator now constructsSolidSyslogFileBlockDeviceseparately and passes it in.Acceptance criteria
BDD scenarios
SolidSyslogFileBlockDevicebetween the file handles and the FileStore.Disposeoccurs (block files are not deleted until rotation forces it). Confirms behaviour is preserved from the pre-S18.02 baseline.Docs and header surface
SolidSyslogBlockDevice.h,SolidSyslogBlockDeviceDefinition.h,SolidSyslogFileBlockDevice.h.SolidSyslogFileStoreConfigupdated —readFile/writeFile/pathPrefixremoved;blockDeviceadded.CLAUDE.md"Public header audiences" — three new rows for the BlockDevice headers;SolidSyslogFileStore.hrow updated for the config change.Out of scope
References
CLAUDE.md"Callback Conventions" — storage-injection pattern.