DUECA/DUSIME
Loading...
Searching...
No Matches
Public Types | List of all members
dueca::Channel Struct Reference

Collection of definitions for modifying channel behaviour. More...

#include <ChannelDef.hxx>

Public Types

enum  EntryTimeAspect { Continuous , Events , AnyTimeAspect }
 Enumeration type defining the entry data type. More...
 
enum  EntryArity { OnlyOneEntry , ZeroOrOneEntries , ZeroOrMoreEntries , OneOrMoreEntries }
 Enumeration type defining the arity of the entry. More...
 
enum  ReadingMode { ReadAllData , ReadReservation , JumpToMatchTime , AdaptEventStream }
 Reading mode, all data, step-by-step or time based. More...
 
enum  PackingMode { MixedPacking , OnlyFullPacking }
 Allow differential packing, or always use full packing. More...
 
enum  TransportClass { UndefinedTransport , Bulk , Regular , HighPriority }
 Different priorities of transporting data. More...
 

Detailed Description

Collection of definitions for modifying channel behaviour.

Member Enumeration Documentation

◆ EntryTimeAspect

Enumeration type defining the entry data type.

Enumerator
Continuous 

Stream-like data, time is contiguous.

Events 

Event-like data, time is a point stamp, multiple events may share the same time.

AnyTimeAspect 

For reading, indicate that both variants are acceptable.

◆ EntryArity

Enumeration type defining the arity of the entry.

Enumerator
OnlyOneEntry 

For writing, only one entry may be present in the channel, for reading, attach only a single entry with the token.

ZeroOrOneEntries 

When opening the channel for reading, it is acceptable that there is no entry yet.

The token will be valid, but data reading will result in an exception.

ZeroOrMoreEntries 

When opening the channel for reading, it is acceptable that there is no entry yet.

The token will be valid, but data reading will result in an exception.

OneOrMoreEntries 

Accept one or multiple entries in the channel, relevant option for both reading and writing tokens.

◆ ReadingMode

Reading mode, all data, step-by-step or time based.

Enumerator
ReadAllData 

Sequentially read all data, from oldest to newest, all data is read once, and reading fails when no more new data is available for the requested time.

Note that if you select this reading mode, data will be kept in the channel until it is read by your module; thus there is an obligation to read or flush data, otherwise excessive memory use follows.

ReadReservation 

Sequentially read all data, from oldest to newest, like ReadAllData.

In addition, this uses a reservation that needs to have been made by the write token(s) that are accessed, ensuring that data written before the creation of this read token remains available. For most user-created channels this is seldom needed, since creation of both reading and writing tokens takes place first, and writing and reading only starts after all tokens have been created. Some of DUECA's own channels do use this, since these channels are created at start-up, and almost immediately used.

JumpToMatchTime 

Read data that matches the requested time, possibly skipping data.

To get a workable simulation, specify a suitable time span, otherwise data has been cleaned before you have an opportunity to read it.

AdaptEventStream 

Adapt to event or stream data, by using ReadAllData for event type data, and JumpToMatchTime for stream data.

◆ PackingMode

Allow differential packing, or always use full packing.

Enumerator
MixedPacking 

Use full and differential packing in a mix.

Select this when you have a mix of static data and changing elements in large objects. With differential packing, an object in a channel is compared to the preceding object, and only elements that differ are packed.

OnlyFullPacking 

Only use full packing.

This is more appropriate for channel entries with small object, or when you expect that all or most data changes from timestep to timestep.

◆ TransportClass

Different priorities of transporting data.

Enumerator
UndefinedTransport 

Transport class not (yet) specified.

Bulk 

Bulk priority is lowest priority in DUECA transport.

Very large objects can be sent by bulk, because in principle the objects do not need to fit in a single buffer used by the transport device. Send and arrival order of Bulk data among its class is preserved, bulk data may arrive later than non-bulk data sent at a later time.

Regular 

Regular priority data is sent at the earliest possible moment.

Triggering of arrival at the next node is no later than the first following communication clock tick. Send/receive ordering among high priority and regular data is preserved.

HighPriority 

High priority data is sent at earliest possible moment, (like regular data).

However, triggering in the next node is immediately after arrival in that node. The difference between regular and high priority is currently only possible in set-ups with reflective memory communications.


The documentation for this struct was generated from the following file: