summaryrefslogtreecommitdiff
path: root/indra/llmessage/lliopipe.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llmessage/lliopipe.cpp')
-rw-r--r--indra/llmessage/lliopipe.cpp93
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;
+}