«interface» BurnSource
libburn
600.0
50.0
612.4370214406964
81.3237865499184
Ecma119Source
604.1172144213822
242.59825146055505
WriterState
861.1034292438676
244.31119796826698
FilesWriterSt
984.2531292100068
359.95094883087904
VolDescWriterSt
717.2457054234224
357.4185959653686
DirInfoWriterSt
854.6043620021998
355.85097462036043
Ecma119Image
392.3294860655768
240.39714472372754
The context data for image burn sources, contains references to the tree, creation options...
261.45257180386454
85.80450046553075
Ecma119Node
291.8219414851778
612.806815288254
init() write_voldesc() write_dir_info()
«interface» ImageWriter
401.9520048709197
344.8700633507891
JolietNode
409.0872475609359
614.8200784564067
FileRegistry
718.2810974616434
459.0339463910502
Ecma119Writer
273.51763645062584
489.95333138112096
JolietWriter
404.3304191009253
485.1965029211101
ElToritoWriter
512.5482665661723
485.19650292111
size : off_t block : uint32_t
IsoFile
720.659511691649
568.4410009713001
«interface» Stream
909.7434429770816
580.3330721213274
ImageWriter goal is to encapsulate the output of image blocks related to one "specification", i.e. we will have an implementation for ECMA-119/RR, other for Joliet...

Note that having different implementations for things that need to be written in the same block has no utility, i.e. RR and ECMA-119 must share its Writer implementation.

Note also that while this provides considerable encapsulation the provided abstraction is really partial: In the relation with WriterState the encapsulation is quite good, each concrete state know what method to call here (notice that this interface is also quite coupled with state). However, with respect to Ecma119Image the abstration only refers to implementation, as the Ecma119Image needs to know about the ImageWriter implementations. This can't be avoided, as Ecma119Image has to be responsible of the instantation in the correct order and following the user needs.

2.3784142300054896
160.54296052536733
The files are registered into the file registry, that will take care about the written of content.
286.59891471565567
708.7674405416217
Each state will invoque property method in each of the ImageWriters. Some writers can return without outputting anything. It is possible that when dealing with UDF or other specification we would need new states and methods in ImageWriter
765.8493820617523
132.001989765302
*
*