rugnux <path>/<prefix>_master.h5 http://<broker>:<port>/ - when the master file is not on disk yet - processes the broker's current collection as it is written: - the start message comes from GET /live/start.cbor; the given path has to end in the collection's master file name, and the data files are read next to it; - JFJochStartMessageReader builds the dataset from the start message (detector, geometry, goniometer, mask) and reads the images straight from the data files; a read of an image whose file the broker has not reported waits for it; - BrokerFeed reads GET /live/events in a thread of its own and hands the reader each closed file. On end, the run finishes with the images the collection delivered (a read past them returns no image). A broken stream, another collection, or a refused follower makes every waiting read throw LiveCollectionLost, which ends the run like a fatal resource error; - the token is taken from JUNGFRAUJOCH_HTTP_TOKEN (the variable the viewer uses) and sent only in the Authorization header; without it, and with no master file on disk, rugnux stops at once; - rotation data and --mode mx only; plain http only (TLS is not linked into rugnux). With the master file on disk, the URL is ignored and the run is offline as before. The streamed run does not read the master file and is not compared with it: its result can differ from an offline run of the same files in the last bits of the metadata. Tests ([Live]): LiveCollection, the server-sent-event parser, the FileWriter callback, the TCP pusher's closed-file reports with two real writers, and JFJochStartMessageReader against the master the writer produced. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SVmAWnzCmRKAXVUCdc4iNi
42 lines
1.4 KiB
CMake
42 lines
1.4 KiB
CMake
ADD_LIBRARY(JFJochReader STATIC
|
|
JFJochReader.cpp JFJochReader.h
|
|
JFJochHDF5Reader.cpp
|
|
JFJochHDF5Reader.h
|
|
SweepLayout.cpp
|
|
SweepLayout.h
|
|
MiniCBF.cpp
|
|
MiniCBF.h
|
|
JFJochCBFReader.cpp
|
|
JFJochCBFReader.h
|
|
MarCCD.cpp
|
|
MarCCD.h
|
|
JFJochMarCCDReader.cpp
|
|
JFJochMarCCDReader.h
|
|
SMV.cpp
|
|
SMV.h
|
|
JFJochSMVReader.cpp
|
|
JFJochSMVReader.h
|
|
HDF5ImageLocator.cpp
|
|
JFJochStartMessageReader.cpp
|
|
JFJochStartMessageReader.h
|
|
HDF5ImageLocator.h
|
|
HDF5ImageSource.cpp
|
|
HDF5ImageSource.h
|
|
HDF5MetadataSource.cpp
|
|
HDF5MetadataSource.h
|
|
JFJochReaderImage.cpp
|
|
JFJochReaderImage.h
|
|
JFJochReaderDataset.cpp
|
|
JFJochReaderDataset.h
|
|
JFJochReaderSpots.h
|
|
)
|
|
|
|
# NB: JFJochHttpReader (the viewer's live-broker HTTP client) lives in viewer/ and links Mbed TLS;
|
|
# it is deliberately NOT part of this always-built library, so the broker/writer never pull in a
|
|
# TLS stack.
|
|
# tiff: the marCCD reader's files are ordinary uncompressed TIFFs, so libtiff - which the build
|
|
# already fetches for JFJochPreview in every mode - reads the pixels and there is no new dependency.
|
|
TARGET_LINK_LIBRARIES(JFJochReader JFJochImageAnalysis JFJochAPI JFJochCommon JFJochZMQ JFJochLogger
|
|
JFJochHDF5Wrappers CBORStream2FrameSerialize tiff ZLIB::ZLIB
|
|
${CMAKE_DL_LIBS})
|