Ignore:
Timestamp:
01/25/17 16:25:17 (7 years ago)
Author:
yushan
Message:

initialize the branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_yushan/src/filter/output_pin.cpp

    r1006 r1037  
    44namespace xios 
    55{ 
    6   COutputPin::COutputPin(CGarbageCollector& gc, bool manualTrigger /*= false*/) 
    7     : gc(gc) 
    8     , manualTrigger(manualTrigger) 
    9   { /* Nothing to do */ } 
    10  
    116  void COutputPin::connectOutput(boost::shared_ptr<CInputPin> inputPin, size_t inputSlot) 
    127  { 
     
    1611 
    1712    outputs.push_back(std::make_pair(inputPin, inputSlot)); 
    18  
    19     if (canBeTriggered()) 
    20       inputPin->setInputTrigger(inputSlot, this); 
    21   } 
    22  
    23   void COutputPin::onOutputReady(CDataPacketPtr packet) 
    24   { 
    25     if (!packet) 
    26       ERROR("void COutputPin::onOutputReady(CDataPacketPtr packet)", 
    27             "The packet cannot be null."); 
    28  
    29     if (manualTrigger) // Don't use canBeTriggered here, this function is virtual and can be overriden 
    30     { 
    31       outputPackets[packet->timestamp] = packet; 
    32       gc.registerObject(this, packet->timestamp); 
    33     } 
    34     else 
    35       deliverOuput(packet); 
    3613  } 
    3714 
     
    4421    std::vector<std::pair<boost::shared_ptr<CInputPin>, size_t> >::iterator it, itEnd; 
    4522    for (it = outputs.begin(), itEnd = outputs.end(); it != itEnd; ++it) 
     23    { 
    4624      it->first->setInput(it->second, packet); 
    47   } 
    48  
    49   void COutputPin::trigger(Time timestamp) 
    50   { 
    51     if (manualTrigger) // Don't use canBeTriggered here, this function is virtual and can be overriden 
    52     { 
    53       std::map<Time, CDataPacketPtr>::iterator it = outputPackets.find(timestamp); 
    54       if (it != outputPackets.end()) 
    55       { 
    56         gc.unregisterObject(this, timestamp); 
    57         deliverOuput(it->second); 
    58         outputPackets.erase(it); 
    59       } 
    6025    } 
    6126  } 
    62  
    63   bool COutputPin::canBeTriggered() const 
    64   { 
    65     return manualTrigger; 
    66   } 
    67  
    68   void COutputPin::setOutputTriggers() 
    69   { 
    70     std::vector<std::pair<boost::shared_ptr<CInputPin>, size_t> >::iterator it, itEnd; 
    71     for (it = outputs.begin(), itEnd = outputs.end(); it != itEnd; ++it) 
    72       it->first->setInputTrigger(it->second, this); 
    73   } 
    74  
    75   void COutputPin::invalidate(Time timestamp) 
    76   { 
    77     outputPackets.erase(outputPackets.begin(), outputPackets.lower_bound(timestamp)); 
    78   } 
    7927} // namespace xios 
Note: See TracChangeset for help on using the changeset viewer.