summaryrefslogtreecommitdiffstats
path: root/src/DEVELOPMENT
blob: f3381fb1ae23dcba086f9bb72208d66470934bd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Architecture
===========
 - Current implementation follows UFO architecture: reader and dataset-builder are split in two filters.
  * The reader is multi-threaded. However, only a single instance of the builder is possible to schedule.
  This could limit maximum throughput on dual-head or even signle-head, but many-core systems.
  * Another problem here is timing. All events in the builder are initiaded from the reader. Consequently,
  as it seems we can't timeout on semi-complete dataset if no new data is arriving.
  * Besides, performance this is also critical for stability. With continuous streaming there is no problem,
  however, if a finite number of frames requested and some packets are lost, the software will wait forever
  for missing bits.


Questions
=========
 - Can we pre-allocate several UFO buffers for forth-comming events. Currently, we need to buffer out-of-order
 packets and copy them later (or buffer everything for simplicity). We can avoid this data copy if we can get
 at least one packet in advance.

 - How I can execute 'generate' method on 'reductor' filter if no new data on the input for the specified 
 amount of time. One option is sending empty buffer with metadata indicating timeout. But this is again 
 hackish.

 - Can we use 16-bit buffers? I can set dimmensions to 1/4 of the correct value to address this. But is it
 possible to do in a clean way?
 
 - What is 'ufotools' python package mentioned in documentation? Just a typo?