An object that allows read access to data of a channel.
More...
#include <fw/ChannelReadWrite.h>
template<typename T>
class mira::ChannelRead< T >
An object that allows read access to data of a channel.
Use Channel::read to obtain access to data of a channel.
The ChannelRead automatically take care that the data is unlocked if the ChannelRead object is no longer used and went out of scope. To explicitly release the data by calling the finish() method.
You can freely copy and reassign the ChannelRead object to other ChannelRead variables. The ChannelRead contains an internal reference counting mechanism. The lock is freed only after all copies have been destroyed or one copy called the finish() method.
- Examples:
- tutorials/MeanCalculator.C, tutorials/MeanCalculatorWithProperties.C, tutorials/Point2Visualization.C, tutorials/Point3BasicVisualization.C, and tutorials/Point3Visualization.C.
◆ Base
◆ Shared
◆ ChannelTypePtr
◆ Slot
◆ ValueType
◆ SharedPtr
◆ ChannelType
◆ ChannelRead() [1/2]
Default constructor that constructs a ChannelRead object that is invalid at the beginning and contains no data.
Before you can use the object you need to assign a valid ChannelWrite object that was obtained using Channel::read().
You can use the isValid() method to check if a ChannelRead object is valid and contains locked data.
◆ ChannelRead() [2/2]
Is called by Channel to construct a ChannelRead object.
- Note
- You should never need to use this constructor directly!
◆ operator const ValueType &()
◆ operator*()
Returns a const reference on the data.
This is essentially the same as calling internalValue() but simplifies the usage similar to STL-iterators.
- Exceptions
-
XRuntime,if | the lock on the data was lost, e.g. by calling the finish() method. |
◆ operator->()
Returns a const pointer on the data.
This simplifies the usage similar to STL-iterators:
stuct MyClass {
void foo();
}
ChannelRead<MyClass> data = ...;
data->foo();
- Exceptions
-
XRuntime,if | the lock on the data was lost, e.g. by calling the finish() method |
◆ readSerializedValue() [1/4]
const Buffer<uint8>& readSerializedValue |
( |
| ) |
|
|
inline |
◆ readSerializedValue() [2/4]
const Buffer<uint8>& readSerializedValue |
( |
uint8 |
formatVersion, |
|
|
bool |
orLower |
|
) |
| |
|
inline |
◆ readSerializedValue() [3/4]
◆ readSerializedValue() [4/4]
◆ readJSON() [1/2]
◆ readJSON() [2/2]
◆ finish() [1/2]
Releases the lock explicitly.
- Note
- After calling this method accessing the data results in an XRuntime exception.
◆ getChannel()
Returns a read-only channel proxy object of the underlying channel.
◆ finish() [2/2]
static void finish |
( |
Shared * |
shared | ) |
|
|
inlinestaticprotected |
◆ discard()
static void discard |
( |
Shared * |
shared | ) |
|
|
inlinestaticprotected |
◆ internalValue() [1/2]
Returns a reference on the data.
- Exceptions
-
Throws | XRuntime, if the lock on the data was lost, e.g. by calling the finish() method |
◆ internalValue() [2/2]
Returns a const reference on the data.
- Exceptions
-
Throws | XRuntime, if the lock on the data was lost, e.g. by calling the finish() method |
◆ isValid()
Returns true, if data was assigned to the ChannelRead or ChannelWrite and if this data is locked.
If this method returns true, you can safely access the underlying data.
If this method returns false, no data was assigned to the ChannelRead / ChannelWrite or the lock on the data was lost. Hence, it is not safe to access the underlying data. If you try to access the data anyway you will get an XRuntime exception.
◆ getChannelID()
const std::string& getChannelID |
( |
| ) |
|
|
inlineinherited |
◆ getTypename()
std::string getTypename |
( |
| ) |
const |
|
inlineinherited |
◆ getTypeMeta()
◆ getTimestamp()
const Time& getTimestamp |
( |
| ) |
const |
|
inlineinherited |
◆ getUseCount()
int getUseCount |
( |
| ) |
const |
|
inlineinherited |
Returns the number of shared instances for this data, may be useful for debugging purposes.
◆ getFlags()
uint32 getFlags |
( |
| ) |
const |
|
inlineinherited |
For internal use only.
Used by remote components of the framework and by player and recorder. Returns current flags of this slot;
◆ addFlags()
void addFlags |
( |
uint32 |
moreFlags | ) |
const |
|
inlineinherited |
For internal use only.
Used by remote components of the framework and by player and recorder. Add additional flags to the slots flags.
◆ checkValid()
void checkValid |
( |
| ) |
const |
|
inlineprotectedinherited |
checks if we are still locked, if not it throws a XAccessViolation
◆ writeSerializedValue()
void writeSerializedValue |
( |
Buffer< uint8 > |
data | ) |
|
|
inlineprotectedinherited |
◆ writeJSON() [1/2]
◆ writeJSON() [2/2]
◆ writeXML()
◆ ChannelReadWriteShared< ChannelRead< T > >
◆ shared
The documentation for this class was generated from the following file: