libbio
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
bio::physical::Periodic Class Reference

#include <Periodic.h>

Inheritance diagram for bio::physical::Periodic:
Inheritance graph
[legend]
Collaboration diagram for bio::physical::Periodic:
Collaboration graph
[legend]

Public Member Functions

 Periodic (Milliseconds interval=GetDefaultInterval())
 
virtual ~Periodic ()
 
virtual void InitializeImplementation (ByteStreams &args)
 
virtual Code Crest ()
 
virtual bool CheckIn ()
 
virtual Code SetInterval (Milliseconds interval)
 
Milliseconds GetInterval () const
 
Timestamp GetTimeLastCrested () const
 
float GetIntervalInSeconds () const
 
virtual void SetLastCrestTimestamp (Timestamp lastCrest)
 
virtual Pointer< const SymmetrySpin () const
 
virtual Code Reify (Pointer< const Symmetry > symmetry)
 
virtual Properties GetProperties () const
 
- Public Member Functions inherited from bio::physical::Class< Periodic >
 Class (Pointer< Periodic > object, Pointer< Symmetry > symmetry=NULL)
 
 Class (Pointer< Periodic > object, SymmetryFactory symmetryFactory)
 
 Class (const Class &other)
 
virtual ~Class ()
 
virtual Pointer< PeriodicGetWaveObject ()
 
virtual Pointer< const PeriodicGetWaveObject () const
 
virtual operator Periodic & ()
 
virtual operator const Periodic & () const
 
virtual Pointer< WaveClone () const
 
Pointer< WaveAsWave ()
 
Pointer< const WaveAsWave () const
 
virtual operator Pointer< Wave > ()
 
- Public Member Functions inherited from bio::physical::Wave
 Wave (Pointer< Symmetry > symmetry=NULL)
 
 Wave (const Wave &other)
 
Waveoperator= (const Wave &other)
 
virtual ~Wave ()
 
Pointer< const SymmetryGetSymmetry () const
 
virtual bool Superpose (Pointer< const Wave > displacement, Pointer< Interference > pattern)
 
virtual Pointer< WaveSuperpose (const ConstWaves &displacement, Pointer< Interference > pattern)
 
virtual Pointer< WaveModulate (Pointer< Wave > signal)
 
virtual Pointer< WaveDemodulate ()
 
virtual Pointer< const WaveDemodulate () const
 
virtual Code Attenuate (Pointer< const Wave > other)
 
virtual Code Disattenuate (Pointer< const Wave > other)
 
Pointer< WaveAsWave ()
 
Pointer< const WaveAsWave () const
 
virtual Pointer< chemical::AtomAsAtom ()
 
virtual Pointer< const chemical::AtomAsAtom () const
 
virtual void operator| (Pointer< Symmetry > symmetry)
 
virtual Pointer< Waveoperator* (Pointer< Wave > signal)
 
virtual Pointer< Waveoperator* ()
 
virtual Pointer< const Waveoperator* () const
 
virtual void operator+ (Pointer< const Wave > other)
 
virtual void operator- (Pointer< const Wave > other)
 
uint16_t GetTypeId () const
 
void SetTypeId (uint16_t typeId)
 

Static Public Member Functions

static Milliseconds GetDefaultInterval ()
 
static Properties GetClassProperties ()
 
static SymmetryMakePeriodicSymmetry ()
 
- Static Public Member Functions inherited from bio::physical::Class< Periodic >
static Pointer< PeriodicConvert (Pointer< Wave > wave)
 
- Static Public Member Functions inherited from bio::physical::Wave
static Properties GetResonanceBetween (ConstWaves waves)
 
static Properties GetResonanceBetween (Pointer< const Wave > wave1, Pointer< const Wave > wave2)
 
static Properties GetResonanceBetween (Pointer< const Wave > wave, const Properties &properties)
 

Protected Attributes

Milliseconds mInterval
 
Timestamp mLastCrestTimestamp
 
- Protected Attributes inherited from bio::physical::Class< Periodic >
Pointer< PeriodicmObject
 
- Protected Attributes inherited from bio::physical::Wave
LazyPointer< SymmetrymSymmetry
 
bool mHasSignal
 
uint16_t mTypeId
 
- Protected Attributes inherited from bio::VirtualBase
bool mHasBeenInitialized
 

Additional Inherited Members

- Protected Member Functions inherited from bio::VirtualBase
 VirtualBase ()
 
virtual ~VirtualBase ()
 
void Initialize (ByteStreams &args)
 
void Initialize (ByteStream arg1)
 
void Initialize (ByteStream arg1, ByteStream arg2)
 
void Initialize (ByteStream arg1, ByteStream arg2, ByteStream arg3)
 

Detailed Description

Periodic objects do work at regular intervals.

Constructor & Destructor Documentation

◆ Periodic()

bio::physical::Periodic::Periodic ( Milliseconds  interval = GetDefaultInterval())
Parameters
intervalthe period that Crest() wants to be called in milliseconds.

◆ ~Periodic()

bio::physical::Periodic::~Periodic ( )
virtual

Member Function Documentation

◆ CheckIn()

bool bio::physical::Periodic::CheckIn ( )
virtual

◆ Crest()

virtual Code bio::physical::Periodic::Crest ( )
inlinevirtual

Crest()s occur at Periodic::mIntervals.
Define your main Periodic logic here.
This method must be fast:

  • do not read slow hardware here
  • do not block for a long time
  • do not sleep
    If derived classes must do slow work, that slow logic MUST BE placed in a separate thread. This method would then get the data stored by that thread and return the data quickly. MAKE SURE that the thread never causes a long mutex wait as a side-effect in this Crest method.

Reimplemented in bio::cellular::Class< T >, bio::cellular::Class< Cell >, bio::cellular::Class< CellularForwarder< CALLER, CLOBBER > >, bio::cellular::Class< CellularForwarder< FinalCell, bio::cellular::Cell > >, bio::cellular::Class< CellularForwarder< FinalOrganelle, bio::cellular::Organelle > >, bio::cellular::Class< Habitat >, bio::cellular::Class< Organ >, bio::cellular::Class< Organelle >, bio::cellular::Class< Organism >, bio::cellular::Class< OrganSystem >, bio::cellular::Class< Tissue >, bio::chemical::Solute, bio::neural::Neuron, bio::CellularForwarder< CALLER, CLOBBER >, bio::CellularForwarder< FinalCell, bio::cellular::Cell >, and bio::CellularForwarder< FinalOrganelle, bio::cellular::Organelle >.

◆ GetClassProperties()

Properties bio::physical::Periodic::GetClassProperties ( )
static

All Periodic objects share the "Periodic" Property.

Returns
{property::Periodic()}

◆ GetDefaultInterval()

Milliseconds bio::physical::Periodic::GetDefaultInterval ( )
static

Ensure virtual methods point to Class implementations.
Currently default is set to 200 milliseconds.

Returns
a default value for Periodic constructors.

◆ GetInterval()

Milliseconds bio::physical::Periodic::GetInterval ( ) const
Returns
the time interval between Crests of *this, in milliseconds.

◆ GetIntervalInSeconds()

float bio::physical::Periodic::GetIntervalInSeconds ( ) const
Returns
the time interval between Crests of *this, in seconds.

◆ GetProperties()

Properties bio::physical::Periodic::GetProperties ( ) const
virtual

◆ GetTimeLastCrested()

Timestamp bio::physical::Periodic::GetTimeLastCrested ( ) const
Returns
the last time *this Crested.

◆ InitializeImplementation()

void bio::physical::Periodic::InitializeImplementation ( ByteStreams args)
virtual

VirtualBase required method. See that class for details (in common/)

Parameters
args

Implements bio::VirtualBase.

◆ MakePeriodicSymmetry()

Symmetry * bio::physical::Periodic::MakePeriodicSymmetry ( )
static

Lazy-Symmetry factory wired into the Wave LazyPointer by the physical::Class<Periodic> factory ctor — defers the eager new Symmetry to first Spin()/deref.

◆ Reify()

Code bio::physical::Periodic::Reify ( Pointer< const Symmetry symmetry)
virtual

Required method from Wave. See that class for details.
Reconstruct *this from the given Symmetry.

Parameters
symmetry

Reimplemented from bio::physical::Wave.

Reimplemented in bio::neural::StemCell.

◆ SetInterval()

Code bio::physical::Periodic::SetInterval ( Milliseconds  interval)
virtual

◆ SetLastCrestTimestamp()

void bio::physical::Periodic::SetLastCrestTimestamp ( Timestamp  lastCrest)
virtual

Sets the timestamp of the last time *this Crested.
USE WITH CAUTION!

Parameters
lastCrest

◆ Spin()

Pointer< const Symmetry > bio::physical::Periodic::Spin ( ) const
virtual

Required method from Wave. See that class for details.

Returns
a Symmetrical image of *this

Reimplemented from bio::physical::Wave.

Reimplemented in bio::neural::StemCell.

Member Data Documentation

◆ mInterval

Milliseconds bio::physical::Periodic::mInterval
protected

◆ mLastCrestTimestamp

Timestamp bio::physical::Periodic::mLastCrestTimestamp
protected

The documentation for this class was generated from the following files: