00001
00034 #include "linden_common.h"
00035 #include "llioutil.h"
00036
00040 LLIOPipe::EStatus LLIOFlush::process_impl(
00041 const LLChannelDescriptors& channels,
00042 buffer_ptr_t& buffer,
00043 bool& eos,
00044 LLSD& context,
00045 LLPumpIO* pump)
00046 {
00047 eos = true;
00048 return STATUS_OK;
00049 }
00050
00054 LLIOPipe::EStatus LLIOSleep::process_impl(
00055 const LLChannelDescriptors& channels,
00056 buffer_ptr_t& buffer,
00057 bool& eos,
00058 LLSD& context,
00059 LLPumpIO* pump)
00060 {
00061 if(mSeconds > 0.0)
00062 {
00063 if(pump) pump->sleepChain(mSeconds);
00064 mSeconds = 0.0;
00065 return STATUS_BREAK;
00066 }
00067 return STATUS_DONE;
00068 }
00069
00073 LLIOPipe::EStatus LLIOAddChain::process_impl(
00074 const LLChannelDescriptors& channels,
00075 buffer_ptr_t& buffer,
00076 bool& eos,
00077 LLSD& context,
00078 LLPumpIO* pump)
00079 {
00080 pump->addChain(mChain, mTimeout);
00081 return STATUS_DONE;
00082 }
00083
00087 LLChangeChannel::LLChangeChannel(S32 is, S32 becomes) :
00088 mIs(is),
00089 mBecomes(becomes)
00090 {
00091 }
00092
00093 void LLChangeChannel::operator()(LLSegment& segment)
00094 {
00095 if(segment.isOnChannel(mIs))
00096 {
00097 segment.setChannel(mBecomes);
00098 }
00099 }