diff options
Diffstat (limited to 'indra/llmessage/lliopipe.cpp')
-rw-r--r-- | indra/llmessage/lliopipe.cpp | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/indra/llmessage/lliopipe.cpp b/indra/llmessage/lliopipe.cpp new file mode 100644 index 0000000000..eac1a8b68a --- /dev/null +++ b/indra/llmessage/lliopipe.cpp @@ -0,0 +1,93 @@ +/** + * @file lliopipe.cpp + * @author Phoenix + * @date 2004-11-19 + * @brief Implementation of the LLIOPipe class + * + * Copyright (c) 2004-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#include "linden_common.h" +#include "lliopipe.h" + +#include "llpumpio.h" + +static const std::string STATUS_SUCCESS_NAMES[LLIOPipe::STATUS_SUCCESS_COUNT] = +{ + std::string("STATUS_OK"), + std::string("STATUS_STOP"), + std::string("STATUS_DONE"), + std::string("STATUS_BREAK"), + std::string("STATUS_NEED_PROCESS"), +}; + +static const std::string STATUS_ERROR_NAMES[LLIOPipe::STATUS_ERROR_COUNT] = +{ + std::string("STATUS_ERROR"), + std::string("STATUS_NOT_IMPLEMENTED"), + std::string("STATUS_PRECONDITION_NOT_MET"), + std::string("STATUS_NO_CONNECTION"), + std::string("STATUS_EXPIRED"), +}; + +// Debugging schmutz for deadlock +const char *gPumpFile = ""; +S32 gPumpLine = 0; + +void pump_debug(const char *file, S32 line) +{ + gPumpFile = file; + gPumpLine = line; +} + +/** + * LLIOPipe + */ +LLIOPipe::LLIOPipe() : + mReferenceCount(0) +{ +} + +LLIOPipe::~LLIOPipe() +{ + //lldebugs << "destroying LLIOPipe" << llendl; +} + +// static +std::string LLIOPipe::lookupStatusString(EStatus status) +{ + if((status >= 0) && (status < STATUS_SUCCESS_COUNT)) + { + return STATUS_SUCCESS_NAMES[status]; + } + else + { + S32 error_code = ((S32)status * -1) - 1; + if(error_code < STATUS_ERROR_COUNT) + { + return STATUS_ERROR_NAMES[error_code]; + } + } + std::string rv; + return rv; +} + +LLIOPipe::EStatus LLIOPipe::process( + const LLChannelDescriptors& channels, + buffer_ptr_t& buffer, + bool& eos, + LLSD& context, + LLPumpIO* pump) +{ + return process_impl(channels, buffer, eos, context, pump); +} + +// virtual +LLIOPipe::EStatus LLIOPipe::handleError( + LLIOPipe::EStatus status, + LLPumpIO* pump) +{ + // by default, the error is not handled. + return status; +} |