WorkElement

Inner interpret of thread

action must be in: * preparation -> ctor * last actions before start -> process special input event * actions on pause -> process special input event * processing -> process * terminate all -> selfDestroy( external memory manager )

Members

Functions

getEventProcessors
EventProcessor[] getEventProcessors()
process
void process()

main work function

pushEvent
void pushEvent(Event ev)

push event to event listener if it exists

sendSignal
void sendSignal(Signal sg)

send signal to signal processor if it exists

setEventListener
void setEventListener(EventProcessor ep)
setSignalProcessor
void setSignalProcessor(SignalProcessor sp)

Mixins

__anonymous
mixin EMM
Undocumented in source.
__anonymous
mixin ClassLogger
Undocumented in source.

Mixed In Members

From mixin ClassLogger

logger
const(Logger) logger [@property getter]
Undocumented in source. Be warned that the author may not have intended to support it.
logger
Logger logger [@property setter]
Undocumented in source. Be warned that the author may not have intended to support it.

Inherited Members

From EventBus

pushEvent
void pushEvent(Event )
Undocumented in source.

From SignalBus

sendSignal
void sendSignal(Signal )
Undocumented in source.

From ExternalMemoryManager

EMM
mixintemplate EMM(string file = __FILE__, size_t line = __LINE__)
isDestroyed
bool isDestroyed [@property setter]
selfConstruct
void selfConstruct()
selfDestroy
void selfDestroy()
preChildsDestroy
void preChildsDestroy()
isDestroyed
bool isDestroyed [@property getter]
registerChildEMM
T registerChildEMM(T obj)
registerChildEMM
T[] registerChildEMM(T[] objs)
newEMM
T newEMM(Args args)
destroy
void destroy()

Examples

struct TestStruct { double x, y; string info; immutable(int)[] data; }
auto ts = TestStruct( 3.14, 2.7, "hello", [ 2, 3, 4 ] );

class TestElement: WorkElement
{
    override void process(){}
}

class TestSignalProcessor : SignalProcessor 
{ void processSignal( in Signal s ) { assert( s.code == 0 ); } }

auto elem = new TestElement;
elem.setSignalProcessor( new TestSignalProcessor );

elem.sendSignal( Signal(0) );

size_t cnt = 0;
elem.setEventListener( new class EventProcessor {
    void processEvent( in Event ev )
    { cnt++; assert( ev.as!TestStruct == ts ); }
    });

auto ev = Event( 8, ts );
elem.pushEvent( ev );
elem.pushEvent( const Event( ev ) );
elem.pushEvent( shared Event( ev ) );
elem.pushEvent( immutable Event( ev ) );
elem.pushEvent( const shared Event( ev ) );
elem.pushEvent( shared const Event( ev ) );
elem.pushEvent( immutable shared Event( ev ) );
elem.pushEvent( shared immutable Event( ev ) );
assert( cnt == 8 );

Meta