Changeset 206 in pacpusframework for trunk/include/Pacpus/kernel/InputOutputInterface.h
- Timestamp:
- 10/30/13 12:26:34 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/Pacpus/kernel/InputOutputInterface.h
r202 r206 23 23 : InputInterfaceBase(name, component, component) 24 24 , method(processMethod) 25 {} 25 { 26 } 26 27 27 28 ~InputInterface() 28 {} 29 { 30 } 29 31 30 32 std::size_t getDataSize() const … … 39 41 40 42 // FIXME: what's the purpose of this function? 41 PacpusEvent * getEventTemplate()42 {43 return new PacpusTypedEvent<T>(TYPED_EVENT);44 }43 //PacpusEvent * getEventTemplate() 44 //{ 45 // return new PacpusTypedEvent<T>(TYPED_EVENT); 46 //} 45 47 46 48 // FIXME: what's the purpose of this function? 47 49 void customEvent(QEvent * event) 48 50 { 49 // TODO check component state started 50 //if (_component) get state 51 // check that component has been started 52 if ((NULL == getComponent()) || (!getComponent()->isActive())) { 53 LOG_DEBUG("component is not active"); 54 return; 55 } 56 57 LOG_DEBUG("Receiver: " << getSignature()); 58 59 //PacpusTypedEvent<T> * typedEvent = dynamic_cast<PacpusTypedEvent<T> *>(event); 60 PacpusEvent * pacpusEvent = dynamic_cast<PacpusEvent *>(event); 61 if (!pacpusEvent) { 62 LOG_WARN("dynamic_cast failed: not a PacpusEvent"); 63 return; 64 } 65 PacpusTypedEvent<T> * typedEvent = dynamic_cast<PacpusTypedEvent<T> *>(pacpusEvent); 66 if (!typedEvent) { 67 LOG_WARN("dynamic_cast failed: incompatible event types"); 68 return; 69 } 70 51 71 switch (event->type()) { 52 72 case TYPED_EVENT: 53 { 54 PacpusTypedEvent<T> * typedEvent = dynamic_cast<PacpusTypedEvent<T> *> (event); 55 56 LOG_DEBUG("Receiver: " << getSignature()); 57 58 if (typedEvent->timerange() < 500 && readingMode() == TimeBounded) { 73 if (TimeBounded == readingMode() && typedEvent->timerange() < 500) { 59 74 LOG_WARN("Incorrect TimeRange (0), switch to NeverSkip"); 60 75 readingMode() = NeverSkip; … … 63 78 switch (readingMode()) { 64 79 case TimeBounded: 65 66 80 if (road_time() - typedEvent->time() > typedEvent->timerange()) { 67 LOG_ DEBUG("Data skipped, receiver: " << this->getSignature());81 LOG_TRACE("Data skipped, receiver: " << this->getSignature()); 68 82 break; 69 83 } … … 73 87 74 88 case GetLast: 75 76 89 (dynamic_cast<C*>(component())->*method)(typedEvent->data()); 77 90 // delete all remaining events … … 85 98 default: 86 99 LOG_WARN("Unknown reading mode " << readingMode()); 100 break; 87 101 } 88 102 break; 89 }90 103 91 104 // Add here new event type if needed … … 95 108 break; 96 109 } 97 event->accept();110 event->accept(); 98 111 } 99 112 100 113 // TODO for Pulling mode (not yet implemented !!!) 101 T & getData() { 114 T & getData() 115 { 102 116 T data; 103 117 // TODO ask output data; 104 105 118 return data; 106 119 } … … 125 138 {} 126 139 127 // Used by Components to send data througthtyped output140 /// Send data through a typed output 128 141 void send(const T & data, road_time_t t = road_time(), road_timerange_t tr = 0); 129 142 … … 150 163 // It is not safe to access the event after it has been posted. 151 164 QEvent * newEvent = new PacpusTypedEvent<T>(TYPED_EVENT, data, t, tr); 152 QCoreApplication::postEvent(it->getInterface(), newEvent, it->getPriority()); 165 QCoreApplication::postEvent( 166 it->getInterface(), 167 newEvent, 168 it->getPriority() 169 ); 153 170 LOG_DEBUG("Sender: " << it->getInterface()->getSignature()); 154 171 LOG_DEBUG("Data &: " << &data);
Note:
See TracChangeset
for help on using the changeset viewer.