]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/jaegertracing/thrift/lib/cpp/src/thrift/TProcessor.h
import quincy beta 17.1.0
[ceph.git] / ceph / src / jaegertracing / thrift / lib / cpp / src / thrift / TProcessor.h
diff --git a/ceph/src/jaegertracing/thrift/lib/cpp/src/thrift/TProcessor.h b/ceph/src/jaegertracing/thrift/lib/cpp/src/thrift/TProcessor.h
deleted file mode 100644 (file)
index 65bf3d4..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef _THRIFT_TPROCESSOR_H_
-#define _THRIFT_TPROCESSOR_H_ 1
-
-#include <string>
-#include <thrift/protocol/TProtocol.h>
-
-namespace apache {
-namespace thrift {
-
-/**
- * Virtual interface class that can handle events from the processor. To
- * use this you should subclass it and implement the methods that you care
- * about. Your subclass can also store local data that you may care about,
- * such as additional "arguments" to these methods (stored in the object
- * instance's state).
- */
-class TProcessorEventHandler {
-public:
-  virtual ~TProcessorEventHandler() = default;
-
-  /**
-   * Called before calling other callback methods.
-   * Expected to return some sort of context object.
-   * The return value is passed to all other callbacks
-   * for that function invocation.
-   */
-  virtual void* getContext(const char* fn_name, void* serverContext) {
-    (void)fn_name;
-    (void)serverContext;
-    return nullptr;
-  }
-
-  /**
-   * Expected to free resources associated with a context.
-   */
-  virtual void freeContext(void* ctx, const char* fn_name) {
-    (void)ctx;
-    (void)fn_name;
-  }
-
-  /**
-   * Called before reading arguments.
-   */
-  virtual void preRead(void* ctx, const char* fn_name) {
-    (void)ctx;
-    (void)fn_name;
-  }
-
-  /**
-   * Called between reading arguments and calling the handler.
-   */
-  virtual void postRead(void* ctx, const char* fn_name, uint32_t bytes) {
-    (void)ctx;
-    (void)fn_name;
-    (void)bytes;
-  }
-
-  /**
-   * Called between calling the handler and writing the response.
-   */
-  virtual void preWrite(void* ctx, const char* fn_name) {
-    (void)ctx;
-    (void)fn_name;
-  }
-
-  /**
-   * Called after writing the response.
-   */
-  virtual void postWrite(void* ctx, const char* fn_name, uint32_t bytes) {
-    (void)ctx;
-    (void)fn_name;
-    (void)bytes;
-  }
-
-  /**
-   * Called when an async function call completes successfully.
-   */
-  virtual void asyncComplete(void* ctx, const char* fn_name) {
-    (void)ctx;
-    (void)fn_name;
-  }
-
-  /**
-   * Called if the handler throws an undeclared exception.
-   */
-  virtual void handlerError(void* ctx, const char* fn_name) {
-    (void)ctx;
-    (void)fn_name;
-  }
-
-protected:
-  TProcessorEventHandler() = default;
-};
-
-/**
- * A helper class used by the generated code to free each context.
- */
-class TProcessorContextFreer {
-public:
-  TProcessorContextFreer(TProcessorEventHandler* handler, void* context, const char* method)
-    : handler_(handler), context_(context), method_(method) {}
-  ~TProcessorContextFreer() {
-    if (handler_ != nullptr)
-      handler_->freeContext(context_, method_);
-  }
-  void unregister() { handler_ = nullptr; }
-
-private:
-  apache::thrift::TProcessorEventHandler* handler_;
-  void* context_;
-  const char* method_;
-};
-
-/**
- * A processor is a generic object that acts upon two streams of data, one
- * an input and the other an output. The definition of this object is loose,
- * though the typical case is for some sort of server that either generates
- * responses to an input stream or forwards data from one pipe onto another.
- *
- */
-class TProcessor {
-public:
-  virtual ~TProcessor() = default;
-
-  virtual bool process(std::shared_ptr<protocol::TProtocol> in,
-                       std::shared_ptr<protocol::TProtocol> out,
-                       void* connectionContext) = 0;
-
-  bool process(std::shared_ptr<apache::thrift::protocol::TProtocol> io, void* connectionContext) {
-    return process(io, io, connectionContext);
-  }
-
-  std::shared_ptr<TProcessorEventHandler> getEventHandler() const { return eventHandler_; }
-
-  void setEventHandler(std::shared_ptr<TProcessorEventHandler> eventHandler) {
-    eventHandler_ = eventHandler;
-  }
-
-protected:
-  TProcessor() = default;
-
-  std::shared_ptr<TProcessorEventHandler> eventHandler_;
-};
-
-/**
- * This is a helper class to allow std::shared_ptr to be used with handler
- * pointers returned by the generated handler factories.
- *
- * The handler factory classes generated by the thrift compiler return raw
- * pointers, and factory->releaseHandler() must be called when the handler is
- * no longer needed.
- *
- * A ReleaseHandler object can be instantiated and passed as the second
- * parameter to a shared_ptr, so that factory->releaseHandler() will be called
- * when the object is no longer needed, instead of deleting the pointer.
- */
-template <typename HandlerFactory_>
-class ReleaseHandler {
-public:
-  ReleaseHandler(const std::shared_ptr<HandlerFactory_>& handlerFactory)
-    : handlerFactory_(handlerFactory) {}
-
-  void operator()(typename HandlerFactory_::Handler* handler) {
-    if (handler) {
-      handlerFactory_->releaseHandler(handler);
-    }
-  }
-
-private:
-  std::shared_ptr<HandlerFactory_> handlerFactory_;
-};
-
-struct TConnectionInfo {
-  // The input and output protocols
-  std::shared_ptr<protocol::TProtocol> input;
-  std::shared_ptr<protocol::TProtocol> output;
-  // The underlying transport used for the connection
-  // This is the transport that was returned by TServerTransport::accept(),
-  // and it may be different than the transport pointed to by the input and
-  // output protocols.
-  std::shared_ptr<transport::TTransport> transport;
-};
-
-class TProcessorFactory {
-public:
-  virtual ~TProcessorFactory() = default;
-
-  /**
-   * Get the TProcessor to use for a particular connection.
-   *
-   * This method is always invoked in the same thread that the connection was
-   * accepted on.  This generally means that this call does not need to be
-   * thread safe, as it will always be invoked from a single thread.
-   */
-  virtual std::shared_ptr<TProcessor> getProcessor(const TConnectionInfo& connInfo) = 0;
-};
-
-class TSingletonProcessorFactory : public TProcessorFactory {
-public:
-  TSingletonProcessorFactory(std::shared_ptr<TProcessor> processor) : processor_(processor) {}
-
-  std::shared_ptr<TProcessor> getProcessor(const TConnectionInfo&) override { return processor_; }
-
-private:
-  std::shared_ptr<TProcessor> processor_;
-};
-}
-} // apache::thrift
-
-#endif // #ifndef _THRIFT_TPROCESSOR_H_