#include <AxPipe.h>
Inheritance diagram for AxPipe::CSplit:
Public Member Functions | |
CSplit () | |
Construct and initialize the member variables. | |
void | AppendSink (CSink *pSink, bool fAutoDelete) |
Do not append a section, it's an error here. | |
void | Sync () |
Ensure that all threads downstream are idle. | |
CSplit * | Init (CPipe *pLeft, CPipe *pRight) |
Initialize split with left and right pointers to pipes. | |
void | Out (CSeg *pSeg) |
Send the same segment downstream to both parts of the split. | |
void | OutSpecial (CSeg *pSeg) |
Send the same special segment downstream to both parts of the split. | |
bool | OutFlush () |
Send a flush signal downstream to both parts of the split. | |
bool | OutClose () |
Send a close signal downstream to both parts of the split. | |
bool | OutOpen () |
Send an open signal downstream to both parts of the split. | |
Private Member Functions | |
void | DestructSink () |
Always delete the left and right upon deletion of this part. | |
void | PumpSplit (CSeg *pSeg) |
Send the same segment down both left and right legs of the split. | |
Private Attributes | |
CPipe * | m_pLeft |
The start of the 'left' side of the split. | |
CPipe * | m_pRight |
The start of the 'right' side of the split. |
It does nothing more to the data, except pass each segment onwards, but twice, to each of the streams given ('left' and 'right')
Definition at line 326 of file AxPipe.h.
|
Do not append a section, it's an error here. Normally append a sink, but not valid for CSplit
Reimplemented from AxPipe::CPipe. Definition at line 75 of file CSplit.cpp. References _T, AxPipe::ERROR_CODE_GENERIC, and AxPipe::CError::SetError(). |
|
Always delete the left and right upon deletion of this part. This is called by the base class destructor. Destruct the chain, waiting for parts of it to finish and skipping parts that should not be auto-destructed. It will call delete for those sections that are marked for auto-destruction. We need to override the the base class definition, since we're not using m_pSink to point to the rest of the chain. Reimplemented from AxPipe::CPipe. Definition at line 43 of file CSplit.cpp. References m_pLeft, m_pRight, and AxPipe::CNoThread::WorkExitWait(). |
|
Initialize split with left and right pointers to pipes. The provided pointers to CPipe are always auto delete'd. Errors occurring in either of the two splits are aggregated backwards to the original CSource.
Definition at line 96 of file CSplit.cpp. |
|
Send the same segment downstream to both parts of the split.
Implements AxPipe::CPipe. Definition at line 104 of file CSplit.cpp. References PumpSplit(). |
|
Send a close signal downstream to both parts of the split. Never indicate propagation, as this object in many ways is a sink.
Reimplemented from AxPipe::CPipe. Definition at line 130 of file CSplit.cpp. References AxPipe::eSegTypeClose, and PumpSplit(). |
|
Send a flush signal downstream to both parts of the split. Never indicate propagation, as this object in many ways is a sink.
Reimplemented from AxPipe::CSink. Definition at line 120 of file CSplit.cpp. References AxPipe::eSegTypeFlush, and PumpSplit(). |
|
Send an open signal downstream to both parts of the split. Never indicate propagation, as this object in many ways is a sink.
Reimplemented from AxPipe::CPipe. Definition at line 140 of file CSplit.cpp. References AxPipe::eSegTypeOpen, and PumpSplit(). |
|
Send the same special segment downstream to both parts of the split.
Reimplemented from AxPipe::CPipe. Definition at line 111 of file CSplit.cpp. References PumpSplit(). |
|
Send the same segment down both left and right legs of the split.
Definition at line 59 of file CSplit.cpp. References AxPipe::CSeg::AddRef(), m_pLeft, m_pRight, and AxPipe::CSink::OutPump(). Referenced by Out(), OutClose(), OutFlush(), OutOpen(), and OutSpecial(). |
|
Ensure that all threads downstream are idle. Synchronize all work downstream, ensuring that there is no work in progress. Reimplemented from AxPipe::CPipe. Definition at line 82 of file CSplit.cpp. References m_pLeft, m_pRight, AxPipe::CPipe::Sync(), and AxPipe::CNoThread::WaitForIdle(). |