From f1c303ed8acf4dca31cb69427bc775fbc7f88ae6 Mon Sep 17 00:00:00 2001
From: sztomi <szelei.t@gmail.com>
Date: Mon, 30 Jan 2017 19:16:03 +0100
Subject: [PATCH 1/2] Removed everything besides grpc

---
 CMakeLists.txt                                |   8 +-
 conanfile.txt                                 |  11 -
 idl/capnp_service.capnp                       |   7 -
 idl/gen_grpc.sh                               |   0
 idl/thrift_service.thrift                     |   5 -
 include/capnp/capnp_service.capnp.h           | 556 -------------
 include/capnp/fixture.h                       |  72 --
 include/direct/fixture.h                      |  27 -
 include/rpclib/fixture.h                      |  40 -
 include/thrift/ThriftServiceBenchmark.h       | 410 ---------
 include/thrift/fixture.h                      |  93 ---
 include/thrift/thrift_service_constants.h     |  24 -
 include/thrift/thrift_service_types.h         |  24 -
 src/benchmark.cc                              |  28 -
 src/capnp/capnp_service.capnp.cc              | 344 --------
 src/thrift/ThriftServiceBenchmark.cpp         | 781 ------------------
 ...ThriftServiceBenchmark_server.skeleton.cpp |  47 --
 src/thrift/thrift_service_constants.cpp       |  17 -
 src/thrift/thrift_service_types.cpp           |  16 -
 19 files changed, 1 insertion(+), 2509 deletions(-)
 delete mode 100644 idl/capnp_service.capnp
 delete mode 100644 idl/gen_grpc.sh
 delete mode 100644 idl/thrift_service.thrift
 delete mode 100644 include/capnp/capnp_service.capnp.h
 delete mode 100644 include/capnp/fixture.h
 delete mode 100644 include/direct/fixture.h
 delete mode 100644 include/rpclib/fixture.h
 delete mode 100644 include/thrift/ThriftServiceBenchmark.h
 delete mode 100644 include/thrift/fixture.h
 delete mode 100644 include/thrift/thrift_service_constants.h
 delete mode 100644 include/thrift/thrift_service_types.h
 delete mode 100644 src/capnp/capnp_service.capnp.cc
 delete mode 100644 src/thrift/ThriftServiceBenchmark.cpp
 delete mode 100644 src/thrift/ThriftServiceBenchmark_server.skeleton.cpp
 delete mode 100644 src/thrift/thrift_service_constants.cpp
 delete mode 100644 src/thrift/thrift_service_types.cpp

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c0b9e55..5e34daa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,23 +14,17 @@ conan_basic_setup()
 add_executable(rpclib_benchmark
     src/target_code.cc
     src/benchmark.cc
-    src/capnp/capnp_service.capnp.cc
-    src/thrift/thrift_service_constants.cpp
-    src/thrift/thrift_service_types.cpp
-    src/thrift/ThriftServiceBenchmark.cpp
     src/grpc/grpc_service.pb.cc
     src/grpc/grpc_service.grpc.pb.cc
     )
 
-target_link_libraries(rpclib_benchmark ${CONAN_LIBS} dw bfd)
+target_link_libraries(rpclib_benchmark ${CONAN_LIBS} pthread)
 set_target_properties(
         rpclib_benchmark
         PROPERTIES
         CXX_STANDARD 14)
 target_compile_definitions(rpclib_benchmark PUBLIC ${CONAN_DEFINES})
 target_include_directories(rpclib_benchmark PUBLIC include)
-target_include_directories(rpclib_benchmark PUBLIC include/thrift)
-target_include_directories(rpclib_benchmark PUBLIC include/capnp)
 target_include_directories(rpclib_benchmark PUBLIC include/grpc)
 
 add_custom_command(TARGET rpclib_benchmark POST_BUILD
diff --git a/conanfile.txt b/conanfile.txt
index 815bc4b..4b844eb 100644
--- a/conanfile.txt
+++ b/conanfile.txt
@@ -1,17 +1,6 @@
 [requires]
 google-benchmark/1.1.0@cpace6/stable
-capnproto/0.5.3@lasote/stable
-thrift/0.9.3@sztomi/testing
 grpc/1.1.0-pre1@sztomi/testing
-rpclib/experimental@sztomi/testing
-backward/1.3.0@Manu343726/testing
-
-[options]
-rpclib:enable_logging=False
-backward:stack_walking_backtrace=True
-backward:stack_details_dw=True
-backward:stack_details_bfd=True
-protobuf:shared=True
 
 [generators]
 cmake
diff --git a/idl/capnp_service.capnp b/idl/capnp_service.capnp
deleted file mode 100644
index 715f600..0000000
--- a/idl/capnp_service.capnp
+++ /dev/null
@@ -1,7 +0,0 @@
-
-@0xd4857e0f5efbe114;
-
-interface CapnpServiceBenchmark {
-    getAnswer @0 (number :Int32) -> (result :Int32);
-    getBlob @1 () -> (result :Data);
-}
diff --git a/idl/gen_grpc.sh b/idl/gen_grpc.sh
deleted file mode 100644
index e69de29..0000000
diff --git a/idl/thrift_service.thrift b/idl/thrift_service.thrift
deleted file mode 100644
index bae1dd8..0000000
--- a/idl/thrift_service.thrift
+++ /dev/null
@@ -1,5 +0,0 @@
-
-service ThriftServiceBenchmark {
-    i32 get_answer(1:i32 number);
-    binary get_blob();
-}
diff --git a/include/capnp/capnp_service.capnp.h b/include/capnp/capnp_service.capnp.h
deleted file mode 100644
index f4e7278..0000000
--- a/include/capnp/capnp_service.capnp.h
+++ /dev/null
@@ -1,556 +0,0 @@
-// Generated by Cap'n Proto compiler, DO NOT EDIT
-// source: capnp_service.capnp
-
-#ifndef CAPNP_INCLUDED_d4857e0f5efbe114_
-#define CAPNP_INCLUDED_d4857e0f5efbe114_
-
-#include <capnp/generated-header-support.h>
-#if !CAPNP_LITE
-#include <capnp/capability.h>
-#endif  // !CAPNP_LITE
-
-#if CAPNP_VERSION != 5003
-#error "Version mismatch between generated code and library headers.  You must use the same version of the Cap'n Proto compiler and library."
-#endif
-
-
-namespace capnp {
-namespace schemas {
-
-CAPNP_DECLARE_SCHEMA(b06fe64f26aed999);
-CAPNP_DECLARE_SCHEMA(a6ad687467f1f3f3);
-CAPNP_DECLARE_SCHEMA(f58cbb5cef7e441d);
-CAPNP_DECLARE_SCHEMA(f004d62623fe8bb1);
-CAPNP_DECLARE_SCHEMA(86e99aa77f1a404e);
-
-}  // namespace schemas
-}  // namespace capnp
-
-
-struct CapnpServiceBenchmark {
-  CapnpServiceBenchmark() = delete;
-
-#if !CAPNP_LITE
-  class Client;
-  class Server;
-#endif  // !CAPNP_LITE
-
-  struct GetAnswerParams;
-  struct GetAnswerResults;
-  struct GetBlobParams;
-  struct GetBlobResults;
-
-  #if !CAPNP_LITE
-  struct _capnpPrivate {
-    CAPNP_DECLARE_INTERFACE_HEADER(b06fe64f26aed999)
-    static constexpr ::capnp::_::RawBrandedSchema const* brand = &schema->defaultBrand;
-  };
-  #endif  // !CAPNP_LITE
-};
-
-struct CapnpServiceBenchmark::GetAnswerParams {
-  GetAnswerParams() = delete;
-
-  class Reader;
-  class Builder;
-  class Pipeline;
-
-  struct _capnpPrivate {
-    CAPNP_DECLARE_STRUCT_HEADER(a6ad687467f1f3f3, 1, 0)
-    #if !CAPNP_LITE
-    static constexpr ::capnp::_::RawBrandedSchema const* brand = &schema->defaultBrand;
-    #endif  // !CAPNP_LITE
-  };
-};
-
-struct CapnpServiceBenchmark::GetAnswerResults {
-  GetAnswerResults() = delete;
-
-  class Reader;
-  class Builder;
-  class Pipeline;
-
-  struct _capnpPrivate {
-    CAPNP_DECLARE_STRUCT_HEADER(f58cbb5cef7e441d, 1, 0)
-    #if !CAPNP_LITE
-    static constexpr ::capnp::_::RawBrandedSchema const* brand = &schema->defaultBrand;
-    #endif  // !CAPNP_LITE
-  };
-};
-
-struct CapnpServiceBenchmark::GetBlobParams {
-  GetBlobParams() = delete;
-
-  class Reader;
-  class Builder;
-  class Pipeline;
-
-  struct _capnpPrivate {
-    CAPNP_DECLARE_STRUCT_HEADER(f004d62623fe8bb1, 0, 0)
-    #if !CAPNP_LITE
-    static constexpr ::capnp::_::RawBrandedSchema const* brand = &schema->defaultBrand;
-    #endif  // !CAPNP_LITE
-  };
-};
-
-struct CapnpServiceBenchmark::GetBlobResults {
-  GetBlobResults() = delete;
-
-  class Reader;
-  class Builder;
-  class Pipeline;
-
-  struct _capnpPrivate {
-    CAPNP_DECLARE_STRUCT_HEADER(86e99aa77f1a404e, 0, 1)
-    #if !CAPNP_LITE
-    static constexpr ::capnp::_::RawBrandedSchema const* brand = &schema->defaultBrand;
-    #endif  // !CAPNP_LITE
-  };
-};
-
-// =======================================================================================
-
-#if !CAPNP_LITE
-class CapnpServiceBenchmark::Client
-    : public virtual ::capnp::Capability::Client {
-public:
-  typedef CapnpServiceBenchmark Calls;
-  typedef CapnpServiceBenchmark Reads;
-
-  Client(decltype(nullptr));
-  explicit Client(::kj::Own< ::capnp::ClientHook>&& hook);
-  template <typename _t, typename = ::kj::EnableIf< ::kj::canConvert<_t*, Server*>()>>
-  Client(::kj::Own<_t>&& server);
-  template <typename _t, typename = ::kj::EnableIf< ::kj::canConvert<_t*, Client*>()>>
-  Client(::kj::Promise<_t>&& promise);
-  Client(::kj::Exception&& exception);
-  Client(Client&) = default;
-  Client(Client&&) = default;
-  Client& operator=(Client& other);
-  Client& operator=(Client&& other);
-
-  ::capnp::Request< ::CapnpServiceBenchmark::GetAnswerParams,  ::CapnpServiceBenchmark::GetAnswerResults> getAnswerRequest(
-      ::kj::Maybe< ::capnp::MessageSize> sizeHint = nullptr);
-  ::capnp::Request< ::CapnpServiceBenchmark::GetBlobParams,  ::CapnpServiceBenchmark::GetBlobResults> getBlobRequest(
-      ::kj::Maybe< ::capnp::MessageSize> sizeHint = nullptr);
-
-protected:
-  Client() = default;
-};
-
-class CapnpServiceBenchmark::Server
-    : public virtual ::capnp::Capability::Server {
-public:
-  typedef CapnpServiceBenchmark Serves;
-
-  ::kj::Promise<void> dispatchCall(uint64_t interfaceId, uint16_t methodId,
-      ::capnp::CallContext< ::capnp::AnyPointer, ::capnp::AnyPointer> context)
-      override;
-
-protected:
-  typedef  ::CapnpServiceBenchmark::GetAnswerParams GetAnswerParams;
-  typedef  ::CapnpServiceBenchmark::GetAnswerResults GetAnswerResults;
-  typedef ::capnp::CallContext<GetAnswerParams, GetAnswerResults> GetAnswerContext;
-  virtual ::kj::Promise<void> getAnswer(GetAnswerContext context);
-  typedef  ::CapnpServiceBenchmark::GetBlobParams GetBlobParams;
-  typedef  ::CapnpServiceBenchmark::GetBlobResults GetBlobResults;
-  typedef ::capnp::CallContext<GetBlobParams, GetBlobResults> GetBlobContext;
-  virtual ::kj::Promise<void> getBlob(GetBlobContext context);
-
-  ::kj::Promise<void> dispatchCallInternal(uint16_t methodId,
-      ::capnp::CallContext< ::capnp::AnyPointer, ::capnp::AnyPointer> context);
-};
-#endif  // !CAPNP_LITE
-
-class CapnpServiceBenchmark::GetAnswerParams::Reader {
-public:
-  typedef GetAnswerParams Reads;
-
-  Reader() = default;
-  inline explicit Reader(::capnp::_::StructReader base): _reader(base) {}
-
-  inline ::capnp::MessageSize totalSize() const {
-    return _reader.totalSize().asPublic();
-  }
-
-#if !CAPNP_LITE
-  inline ::kj::StringTree toString() const {
-    return ::capnp::_::structString(_reader, *_capnpPrivate::brand);
-  }
-#endif  // !CAPNP_LITE
-
-  inline  ::int32_t getNumber() const;
-
-private:
-  ::capnp::_::StructReader _reader;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::ToDynamic_;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::_::PointerHelpers;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::List;
-  friend class ::capnp::MessageBuilder;
-  friend class ::capnp::Orphanage;
-};
-
-class CapnpServiceBenchmark::GetAnswerParams::Builder {
-public:
-  typedef GetAnswerParams Builds;
-
-  Builder() = delete;  // Deleted to discourage incorrect usage.
-                       // You can explicitly initialize to nullptr instead.
-  inline Builder(decltype(nullptr)) {}
-  inline explicit Builder(::capnp::_::StructBuilder base): _builder(base) {}
-  inline operator Reader() const { return Reader(_builder.asReader()); }
-  inline Reader asReader() const { return *this; }
-
-  inline ::capnp::MessageSize totalSize() const { return asReader().totalSize(); }
-#if !CAPNP_LITE
-  inline ::kj::StringTree toString() const { return asReader().toString(); }
-#endif  // !CAPNP_LITE
-
-  inline  ::int32_t getNumber();
-  inline void setNumber( ::int32_t value);
-
-private:
-  ::capnp::_::StructBuilder _builder;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::ToDynamic_;
-  friend class ::capnp::Orphanage;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::_::PointerHelpers;
-};
-
-#if !CAPNP_LITE
-class CapnpServiceBenchmark::GetAnswerParams::Pipeline {
-public:
-  typedef GetAnswerParams Pipelines;
-
-  inline Pipeline(decltype(nullptr)): _typeless(nullptr) {}
-  inline explicit Pipeline(::capnp::AnyPointer::Pipeline&& typeless)
-      : _typeless(kj::mv(typeless)) {}
-
-private:
-  ::capnp::AnyPointer::Pipeline _typeless;
-  friend class ::capnp::PipelineHook;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::ToDynamic_;
-};
-#endif  // !CAPNP_LITE
-
-class CapnpServiceBenchmark::GetAnswerResults::Reader {
-public:
-  typedef GetAnswerResults Reads;
-
-  Reader() = default;
-  inline explicit Reader(::capnp::_::StructReader base): _reader(base) {}
-
-  inline ::capnp::MessageSize totalSize() const {
-    return _reader.totalSize().asPublic();
-  }
-
-#if !CAPNP_LITE
-  inline ::kj::StringTree toString() const {
-    return ::capnp::_::structString(_reader, *_capnpPrivate::brand);
-  }
-#endif  // !CAPNP_LITE
-
-  inline  ::int32_t getResult() const;
-
-private:
-  ::capnp::_::StructReader _reader;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::ToDynamic_;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::_::PointerHelpers;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::List;
-  friend class ::capnp::MessageBuilder;
-  friend class ::capnp::Orphanage;
-};
-
-class CapnpServiceBenchmark::GetAnswerResults::Builder {
-public:
-  typedef GetAnswerResults Builds;
-
-  Builder() = delete;  // Deleted to discourage incorrect usage.
-                       // You can explicitly initialize to nullptr instead.
-  inline Builder(decltype(nullptr)) {}
-  inline explicit Builder(::capnp::_::StructBuilder base): _builder(base) {}
-  inline operator Reader() const { return Reader(_builder.asReader()); }
-  inline Reader asReader() const { return *this; }
-
-  inline ::capnp::MessageSize totalSize() const { return asReader().totalSize(); }
-#if !CAPNP_LITE
-  inline ::kj::StringTree toString() const { return asReader().toString(); }
-#endif  // !CAPNP_LITE
-
-  inline  ::int32_t getResult();
-  inline void setResult( ::int32_t value);
-
-private:
-  ::capnp::_::StructBuilder _builder;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::ToDynamic_;
-  friend class ::capnp::Orphanage;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::_::PointerHelpers;
-};
-
-#if !CAPNP_LITE
-class CapnpServiceBenchmark::GetAnswerResults::Pipeline {
-public:
-  typedef GetAnswerResults Pipelines;
-
-  inline Pipeline(decltype(nullptr)): _typeless(nullptr) {}
-  inline explicit Pipeline(::capnp::AnyPointer::Pipeline&& typeless)
-      : _typeless(kj::mv(typeless)) {}
-
-private:
-  ::capnp::AnyPointer::Pipeline _typeless;
-  friend class ::capnp::PipelineHook;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::ToDynamic_;
-};
-#endif  // !CAPNP_LITE
-
-class CapnpServiceBenchmark::GetBlobParams::Reader {
-public:
-  typedef GetBlobParams Reads;
-
-  Reader() = default;
-  inline explicit Reader(::capnp::_::StructReader base): _reader(base) {}
-
-  inline ::capnp::MessageSize totalSize() const {
-    return _reader.totalSize().asPublic();
-  }
-
-#if !CAPNP_LITE
-  inline ::kj::StringTree toString() const {
-    return ::capnp::_::structString(_reader, *_capnpPrivate::brand);
-  }
-#endif  // !CAPNP_LITE
-
-private:
-  ::capnp::_::StructReader _reader;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::ToDynamic_;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::_::PointerHelpers;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::List;
-  friend class ::capnp::MessageBuilder;
-  friend class ::capnp::Orphanage;
-};
-
-class CapnpServiceBenchmark::GetBlobParams::Builder {
-public:
-  typedef GetBlobParams Builds;
-
-  Builder() = delete;  // Deleted to discourage incorrect usage.
-                       // You can explicitly initialize to nullptr instead.
-  inline Builder(decltype(nullptr)) {}
-  inline explicit Builder(::capnp::_::StructBuilder base): _builder(base) {}
-  inline operator Reader() const { return Reader(_builder.asReader()); }
-  inline Reader asReader() const { return *this; }
-
-  inline ::capnp::MessageSize totalSize() const { return asReader().totalSize(); }
-#if !CAPNP_LITE
-  inline ::kj::StringTree toString() const { return asReader().toString(); }
-#endif  // !CAPNP_LITE
-
-private:
-  ::capnp::_::StructBuilder _builder;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::ToDynamic_;
-  friend class ::capnp::Orphanage;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::_::PointerHelpers;
-};
-
-#if !CAPNP_LITE
-class CapnpServiceBenchmark::GetBlobParams::Pipeline {
-public:
-  typedef GetBlobParams Pipelines;
-
-  inline Pipeline(decltype(nullptr)): _typeless(nullptr) {}
-  inline explicit Pipeline(::capnp::AnyPointer::Pipeline&& typeless)
-      : _typeless(kj::mv(typeless)) {}
-
-private:
-  ::capnp::AnyPointer::Pipeline _typeless;
-  friend class ::capnp::PipelineHook;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::ToDynamic_;
-};
-#endif  // !CAPNP_LITE
-
-class CapnpServiceBenchmark::GetBlobResults::Reader {
-public:
-  typedef GetBlobResults Reads;
-
-  Reader() = default;
-  inline explicit Reader(::capnp::_::StructReader base): _reader(base) {}
-
-  inline ::capnp::MessageSize totalSize() const {
-    return _reader.totalSize().asPublic();
-  }
-
-#if !CAPNP_LITE
-  inline ::kj::StringTree toString() const {
-    return ::capnp::_::structString(_reader, *_capnpPrivate::brand);
-  }
-#endif  // !CAPNP_LITE
-
-  inline bool hasResult() const;
-  inline  ::capnp::Data::Reader getResult() const;
-
-private:
-  ::capnp::_::StructReader _reader;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::ToDynamic_;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::_::PointerHelpers;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::List;
-  friend class ::capnp::MessageBuilder;
-  friend class ::capnp::Orphanage;
-};
-
-class CapnpServiceBenchmark::GetBlobResults::Builder {
-public:
-  typedef GetBlobResults Builds;
-
-  Builder() = delete;  // Deleted to discourage incorrect usage.
-                       // You can explicitly initialize to nullptr instead.
-  inline Builder(decltype(nullptr)) {}
-  inline explicit Builder(::capnp::_::StructBuilder base): _builder(base) {}
-  inline operator Reader() const { return Reader(_builder.asReader()); }
-  inline Reader asReader() const { return *this; }
-
-  inline ::capnp::MessageSize totalSize() const { return asReader().totalSize(); }
-#if !CAPNP_LITE
-  inline ::kj::StringTree toString() const { return asReader().toString(); }
-#endif  // !CAPNP_LITE
-
-  inline bool hasResult();
-  inline  ::capnp::Data::Builder getResult();
-  inline void setResult( ::capnp::Data::Reader value);
-  inline  ::capnp::Data::Builder initResult(unsigned int size);
-  inline void adoptResult(::capnp::Orphan< ::capnp::Data>&& value);
-  inline ::capnp::Orphan< ::capnp::Data> disownResult();
-
-private:
-  ::capnp::_::StructBuilder _builder;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::ToDynamic_;
-  friend class ::capnp::Orphanage;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::_::PointerHelpers;
-};
-
-#if !CAPNP_LITE
-class CapnpServiceBenchmark::GetBlobResults::Pipeline {
-public:
-  typedef GetBlobResults Pipelines;
-
-  inline Pipeline(decltype(nullptr)): _typeless(nullptr) {}
-  inline explicit Pipeline(::capnp::AnyPointer::Pipeline&& typeless)
-      : _typeless(kj::mv(typeless)) {}
-
-private:
-  ::capnp::AnyPointer::Pipeline _typeless;
-  friend class ::capnp::PipelineHook;
-  template <typename, ::capnp::Kind>
-  friend struct ::capnp::ToDynamic_;
-};
-#endif  // !CAPNP_LITE
-
-// =======================================================================================
-
-#if !CAPNP_LITE
-inline CapnpServiceBenchmark::Client::Client(decltype(nullptr))
-    : ::capnp::Capability::Client(nullptr) {}
-inline CapnpServiceBenchmark::Client::Client(
-    ::kj::Own< ::capnp::ClientHook>&& hook)
-    : ::capnp::Capability::Client(::kj::mv(hook)) {}
-template <typename _t, typename>
-inline CapnpServiceBenchmark::Client::Client(::kj::Own<_t>&& server)
-    : ::capnp::Capability::Client(::kj::mv(server)) {}
-template <typename _t, typename>
-inline CapnpServiceBenchmark::Client::Client(::kj::Promise<_t>&& promise)
-    : ::capnp::Capability::Client(::kj::mv(promise)) {}
-inline CapnpServiceBenchmark::Client::Client(::kj::Exception&& exception)
-    : ::capnp::Capability::Client(::kj::mv(exception)) {}
-inline  ::CapnpServiceBenchmark::Client& CapnpServiceBenchmark::Client::operator=(Client& other) {
-  ::capnp::Capability::Client::operator=(other);
-  return *this;
-}
-inline  ::CapnpServiceBenchmark::Client& CapnpServiceBenchmark::Client::operator=(Client&& other) {
-  ::capnp::Capability::Client::operator=(kj::mv(other));
-  return *this;
-}
-
-#endif  // !CAPNP_LITE
-inline  ::int32_t CapnpServiceBenchmark::GetAnswerParams::Reader::getNumber() const {
-  return _reader.getDataField< ::int32_t>(
-      0 * ::capnp::ELEMENTS);
-}
-
-inline  ::int32_t CapnpServiceBenchmark::GetAnswerParams::Builder::getNumber() {
-  return _builder.getDataField< ::int32_t>(
-      0 * ::capnp::ELEMENTS);
-}
-inline void CapnpServiceBenchmark::GetAnswerParams::Builder::setNumber( ::int32_t value) {
-  _builder.setDataField< ::int32_t>(
-      0 * ::capnp::ELEMENTS, value);
-}
-
-inline  ::int32_t CapnpServiceBenchmark::GetAnswerResults::Reader::getResult() const {
-  return _reader.getDataField< ::int32_t>(
-      0 * ::capnp::ELEMENTS);
-}
-
-inline  ::int32_t CapnpServiceBenchmark::GetAnswerResults::Builder::getResult() {
-  return _builder.getDataField< ::int32_t>(
-      0 * ::capnp::ELEMENTS);
-}
-inline void CapnpServiceBenchmark::GetAnswerResults::Builder::setResult( ::int32_t value) {
-  _builder.setDataField< ::int32_t>(
-      0 * ::capnp::ELEMENTS, value);
-}
-
-inline bool CapnpServiceBenchmark::GetBlobResults::Reader::hasResult() const {
-  return !_reader.getPointerField(0 * ::capnp::POINTERS).isNull();
-}
-inline bool CapnpServiceBenchmark::GetBlobResults::Builder::hasResult() {
-  return !_builder.getPointerField(0 * ::capnp::POINTERS).isNull();
-}
-inline  ::capnp::Data::Reader CapnpServiceBenchmark::GetBlobResults::Reader::getResult() const {
-  return ::capnp::_::PointerHelpers< ::capnp::Data>::get(
-      _reader.getPointerField(0 * ::capnp::POINTERS));
-}
-inline  ::capnp::Data::Builder CapnpServiceBenchmark::GetBlobResults::Builder::getResult() {
-  return ::capnp::_::PointerHelpers< ::capnp::Data>::get(
-      _builder.getPointerField(0 * ::capnp::POINTERS));
-}
-inline void CapnpServiceBenchmark::GetBlobResults::Builder::setResult( ::capnp::Data::Reader value) {
-  ::capnp::_::PointerHelpers< ::capnp::Data>::set(
-      _builder.getPointerField(0 * ::capnp::POINTERS), value);
-}
-inline  ::capnp::Data::Builder CapnpServiceBenchmark::GetBlobResults::Builder::initResult(unsigned int size) {
-  return ::capnp::_::PointerHelpers< ::capnp::Data>::init(
-      _builder.getPointerField(0 * ::capnp::POINTERS), size);
-}
-inline void CapnpServiceBenchmark::GetBlobResults::Builder::adoptResult(
-    ::capnp::Orphan< ::capnp::Data>&& value) {
-  ::capnp::_::PointerHelpers< ::capnp::Data>::adopt(
-      _builder.getPointerField(0 * ::capnp::POINTERS), kj::mv(value));
-}
-inline ::capnp::Orphan< ::capnp::Data> CapnpServiceBenchmark::GetBlobResults::Builder::disownResult() {
-  return ::capnp::_::PointerHelpers< ::capnp::Data>::disown(
-      _builder.getPointerField(0 * ::capnp::POINTERS));
-}
-
-
-#endif  // CAPNP_INCLUDED_d4857e0f5efbe114_
diff --git a/include/capnp/fixture.h b/include/capnp/fixture.h
deleted file mode 100644
index 5ff51a2..0000000
--- a/include/capnp/fixture.h
+++ /dev/null
@@ -1,72 +0,0 @@
-#pragma once
-
-#ifndef FIXTURE_H_NNOJDJZG
-#define FIXTURE_H_NNOJDJZG
-
-#include "benchmark/benchmark.h"
-
-#include "capnp/ez-rpc.h"
-
-#include "target_code.h"
-
-#include "capnp/capnp_service.capnp.h"
-
-class capnp_bench : public benchmark::Fixture {
-private:
-  static int blob_size_;
-  class capnp_server : public CapnpServiceBenchmark::Server {
-  public:
-    kj::Promise<void> getAnswer(GetAnswerContext context) override {
-      auto num = context.getParams().getNumber();
-      context.getResults().setResult(::get_answer(num));
-      return kj::READY_NOW;
-    }
-
-    kj::Promise<void> getBlob(GetBlobContext context) override {
-      auto blob = ::get_blob(blob_size_);
-      kj::ArrayPtr<unsigned char> arr((unsigned char *)blob.data(),
-                                      blob.size());
-      context.getResults().setResult(capnp::Data::Reader(arr));
-      return kj::READY_NOW;
-    }
-  };
-
-public:
-  capnp_bench()
-      : server(kj::heap<capnp_server>(), "127.0.0.1:8081"),
-        reader_options{256 * 1024 * 1024, 64},
-        client_thing("127.0.0.1:8081", 8080, reader_options),
-        client(client_thing.getMain<CapnpServiceBenchmark>()) {
-    auto &wait_scope = server.getWaitScope();
-    server.getPort().wait(wait_scope);
-  }
-
-  void get_answer(int param) {
-    (void)param;
-    auto request = client.getAnswerRequest();
-    request.setNumber(23);
-    auto resultPromise = request.send();
-    int a;
-    benchmark::DoNotOptimize(
-        a = resultPromise.wait(client_thing.getWaitScope()).getResult());
-  }
-
-  void get_blob(int param) {
-    blob_size_ = param;
-    auto request = client.getBlobRequest();
-    auto resultPromise = request.send();
-    std::string s;
-    auto result =
-        resultPromise.wait(client_thing.getWaitScope()).getResult().asChars();
-    benchmark::DoNotOptimize(s = result.begin());
-  }
-
-  ~capnp_bench() noexcept {}
-
-  capnp::EzRpcServer server;
-  capnp::ReaderOptions reader_options;
-  capnp::EzRpcClient client_thing;
-  CapnpServiceBenchmark::Client client;
-};
-
-#endif /* end of include guard: FIXTURE_H_NNOJDJZG */
diff --git a/include/direct/fixture.h b/include/direct/fixture.h
deleted file mode 100644
index bcf7bb4..0000000
--- a/include/direct/fixture.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#pragma once
-
-#ifndef FIXTURE_H_RFGFCJ3X
-#define FIXTURE_H_RFGFCJ3X
-
-#include "benchmark/benchmark.h"
-
-#include "target_code.h"
-
-// direct function call
-class direct_bench : public benchmark::Fixture {
-public:
-  void get_answer(int param) {
-    (void)param;
-    int a;
-    benchmark::DoNotOptimize(a = ::get_answer(23));
-  }
-
-  void get_blob(int param) {
-    std::string s;
-    benchmark::DoNotOptimize(s = ::get_blob(param));
-    std::size_t size;
-    benchmark::DoNotOptimize(size = s.size());
-  }
-};
-
-#endif /* end of include guard: FIXTURE_H_RFGFCJ3X */
diff --git a/include/rpclib/fixture.h b/include/rpclib/fixture.h
deleted file mode 100644
index 0ef0b87..0000000
--- a/include/rpclib/fixture.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#pragma once
-
-#ifndef FIXTURE_H_EWLDRJT7
-#define FIXTURE_H_EWLDRJT7
-
-#include "benchmark/benchmark.h"
-
-#include "target_code.h"
-
-#include "rpc/client.h"
-#include "rpc/server.h"
-
-class rpclib_bench : public benchmark::Fixture {
-public:
-  rpclib_bench() : server(8086), client("127.0.0.1", 8086) {
-    server.bind("get_answer", &::get_answer);
-    server.bind("get_blob", [this]() { return ::get_blob(blob_size_); });
-    server.async_run(1);
-  }
-
-  void get_answer(int param) {
-    (void)param;
-    int a;
-    benchmark::DoNotOptimize(a = client.call("get_answer", 23).as<int>());
-  }
-
-  void get_blob(int param) {
-    blob_size_ = param;
-    std::string s;
-    benchmark::DoNotOptimize(s = client.call("get_blob").as<std::string>());
-    std::size_t size;
-    benchmark::DoNotOptimize(size = s.size());
-  }
-
-  int blob_size_;
-  rpc::server server;
-  rpc::client client;
-};
-
-#endif /* end of include guard: FIXTURE_H_EWLDRJT7 */
diff --git a/include/thrift/ThriftServiceBenchmark.h b/include/thrift/ThriftServiceBenchmark.h
deleted file mode 100644
index 1d04541..0000000
--- a/include/thrift/ThriftServiceBenchmark.h
+++ /dev/null
@@ -1,410 +0,0 @@
-/**
- * Autogenerated by Thrift Compiler (0.9.3)
- *
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- *  @generated
- */
-#ifndef ThriftServiceBenchmark_H
-#define ThriftServiceBenchmark_H
-
-#include <thrift/TDispatchProcessor.h>
-#include <thrift/async/TConcurrentClientSyncInfo.h>
-#include "thrift_service_types.h"
-
-
-
-#ifdef _WIN32
-  #pragma warning( push )
-  #pragma warning (disable : 4250 ) //inheriting methods via dominance 
-#endif
-
-class ThriftServiceBenchmarkIf {
- public:
-  virtual ~ThriftServiceBenchmarkIf() {}
-  virtual int32_t get_answer(const int32_t number) = 0;
-  virtual void get_blob(std::string& _return) = 0;
-};
-
-class ThriftServiceBenchmarkIfFactory {
- public:
-  typedef ThriftServiceBenchmarkIf Handler;
-
-  virtual ~ThriftServiceBenchmarkIfFactory() {}
-
-  virtual ThriftServiceBenchmarkIf* getHandler(const ::apache::thrift::TConnectionInfo& connInfo) = 0;
-  virtual void releaseHandler(ThriftServiceBenchmarkIf* /* handler */) = 0;
-};
-
-class ThriftServiceBenchmarkIfSingletonFactory : virtual public ThriftServiceBenchmarkIfFactory {
- public:
-  ThriftServiceBenchmarkIfSingletonFactory(const boost::shared_ptr<ThriftServiceBenchmarkIf>& iface) : iface_(iface) {}
-  virtual ~ThriftServiceBenchmarkIfSingletonFactory() {}
-
-  virtual ThriftServiceBenchmarkIf* getHandler(const ::apache::thrift::TConnectionInfo&) {
-    return iface_.get();
-  }
-  virtual void releaseHandler(ThriftServiceBenchmarkIf* /* handler */) {}
-
- protected:
-  boost::shared_ptr<ThriftServiceBenchmarkIf> iface_;
-};
-
-class ThriftServiceBenchmarkNull : virtual public ThriftServiceBenchmarkIf {
- public:
-  virtual ~ThriftServiceBenchmarkNull() {}
-  int32_t get_answer(const int32_t /* number */) {
-    int32_t _return = 0;
-    return _return;
-  }
-  void get_blob(std::string& /* _return */) {
-    return;
-  }
-};
-
-typedef struct _ThriftServiceBenchmark_get_answer_args__isset {
-  _ThriftServiceBenchmark_get_answer_args__isset() : number(false) {}
-  bool number :1;
-} _ThriftServiceBenchmark_get_answer_args__isset;
-
-class ThriftServiceBenchmark_get_answer_args {
- public:
-
-  ThriftServiceBenchmark_get_answer_args(const ThriftServiceBenchmark_get_answer_args&);
-  ThriftServiceBenchmark_get_answer_args& operator=(const ThriftServiceBenchmark_get_answer_args&);
-  ThriftServiceBenchmark_get_answer_args() : number(0) {
-  }
-
-  virtual ~ThriftServiceBenchmark_get_answer_args() throw();
-  int32_t number;
-
-  _ThriftServiceBenchmark_get_answer_args__isset __isset;
-
-  void __set_number(const int32_t val);
-
-  bool operator == (const ThriftServiceBenchmark_get_answer_args & rhs) const
-  {
-    if (!(number == rhs.number))
-      return false;
-    return true;
-  }
-  bool operator != (const ThriftServiceBenchmark_get_answer_args &rhs) const {
-    return !(*this == rhs);
-  }
-
-  bool operator < (const ThriftServiceBenchmark_get_answer_args & ) const;
-
-  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
-  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
-
-};
-
-
-class ThriftServiceBenchmark_get_answer_pargs {
- public:
-
-
-  virtual ~ThriftServiceBenchmark_get_answer_pargs() throw();
-  const int32_t* number;
-
-  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
-
-};
-
-typedef struct _ThriftServiceBenchmark_get_answer_result__isset {
-  _ThriftServiceBenchmark_get_answer_result__isset() : success(false) {}
-  bool success :1;
-} _ThriftServiceBenchmark_get_answer_result__isset;
-
-class ThriftServiceBenchmark_get_answer_result {
- public:
-
-  ThriftServiceBenchmark_get_answer_result(const ThriftServiceBenchmark_get_answer_result&);
-  ThriftServiceBenchmark_get_answer_result& operator=(const ThriftServiceBenchmark_get_answer_result&);
-  ThriftServiceBenchmark_get_answer_result() : success(0) {
-  }
-
-  virtual ~ThriftServiceBenchmark_get_answer_result() throw();
-  int32_t success;
-
-  _ThriftServiceBenchmark_get_answer_result__isset __isset;
-
-  void __set_success(const int32_t val);
-
-  bool operator == (const ThriftServiceBenchmark_get_answer_result & rhs) const
-  {
-    if (!(success == rhs.success))
-      return false;
-    return true;
-  }
-  bool operator != (const ThriftServiceBenchmark_get_answer_result &rhs) const {
-    return !(*this == rhs);
-  }
-
-  bool operator < (const ThriftServiceBenchmark_get_answer_result & ) const;
-
-  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
-  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
-
-};
-
-typedef struct _ThriftServiceBenchmark_get_answer_presult__isset {
-  _ThriftServiceBenchmark_get_answer_presult__isset() : success(false) {}
-  bool success :1;
-} _ThriftServiceBenchmark_get_answer_presult__isset;
-
-class ThriftServiceBenchmark_get_answer_presult {
- public:
-
-
-  virtual ~ThriftServiceBenchmark_get_answer_presult() throw();
-  int32_t* success;
-
-  _ThriftServiceBenchmark_get_answer_presult__isset __isset;
-
-  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
-
-};
-
-
-class ThriftServiceBenchmark_get_blob_args {
- public:
-
-  ThriftServiceBenchmark_get_blob_args(const ThriftServiceBenchmark_get_blob_args&);
-  ThriftServiceBenchmark_get_blob_args& operator=(const ThriftServiceBenchmark_get_blob_args&);
-  ThriftServiceBenchmark_get_blob_args() {
-  }
-
-  virtual ~ThriftServiceBenchmark_get_blob_args() throw();
-
-  bool operator == (const ThriftServiceBenchmark_get_blob_args & /* rhs */) const
-  {
-    return true;
-  }
-  bool operator != (const ThriftServiceBenchmark_get_blob_args &rhs) const {
-    return !(*this == rhs);
-  }
-
-  bool operator < (const ThriftServiceBenchmark_get_blob_args & ) const;
-
-  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
-  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
-
-};
-
-
-class ThriftServiceBenchmark_get_blob_pargs {
- public:
-
-
-  virtual ~ThriftServiceBenchmark_get_blob_pargs() throw();
-
-  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
-
-};
-
-typedef struct _ThriftServiceBenchmark_get_blob_result__isset {
-  _ThriftServiceBenchmark_get_blob_result__isset() : success(false) {}
-  bool success :1;
-} _ThriftServiceBenchmark_get_blob_result__isset;
-
-class ThriftServiceBenchmark_get_blob_result {
- public:
-
-  ThriftServiceBenchmark_get_blob_result(const ThriftServiceBenchmark_get_blob_result&);
-  ThriftServiceBenchmark_get_blob_result& operator=(const ThriftServiceBenchmark_get_blob_result&);
-  ThriftServiceBenchmark_get_blob_result() : success() {
-  }
-
-  virtual ~ThriftServiceBenchmark_get_blob_result() throw();
-  std::string success;
-
-  _ThriftServiceBenchmark_get_blob_result__isset __isset;
-
-  void __set_success(const std::string& val);
-
-  bool operator == (const ThriftServiceBenchmark_get_blob_result & rhs) const
-  {
-    if (!(success == rhs.success))
-      return false;
-    return true;
-  }
-  bool operator != (const ThriftServiceBenchmark_get_blob_result &rhs) const {
-    return !(*this == rhs);
-  }
-
-  bool operator < (const ThriftServiceBenchmark_get_blob_result & ) const;
-
-  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
-  uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
-
-};
-
-typedef struct _ThriftServiceBenchmark_get_blob_presult__isset {
-  _ThriftServiceBenchmark_get_blob_presult__isset() : success(false) {}
-  bool success :1;
-} _ThriftServiceBenchmark_get_blob_presult__isset;
-
-class ThriftServiceBenchmark_get_blob_presult {
- public:
-
-
-  virtual ~ThriftServiceBenchmark_get_blob_presult() throw();
-  std::string* success;
-
-  _ThriftServiceBenchmark_get_blob_presult__isset __isset;
-
-  uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
-
-};
-
-class ThriftServiceBenchmarkClient : virtual public ThriftServiceBenchmarkIf {
- public:
-  ThriftServiceBenchmarkClient(boost::shared_ptr< ::apache::thrift::protocol::TProtocol> prot) {
-    setProtocol(prot);
-  }
-  ThriftServiceBenchmarkClient(boost::shared_ptr< ::apache::thrift::protocol::TProtocol> iprot, boost::shared_ptr< ::apache::thrift::protocol::TProtocol> oprot) {
-    setProtocol(iprot,oprot);
-  }
- private:
-  void setProtocol(boost::shared_ptr< ::apache::thrift::protocol::TProtocol> prot) {
-  setProtocol(prot,prot);
-  }
-  void setProtocol(boost::shared_ptr< ::apache::thrift::protocol::TProtocol> iprot, boost::shared_ptr< ::apache::thrift::protocol::TProtocol> oprot) {
-    piprot_=iprot;
-    poprot_=oprot;
-    iprot_ = iprot.get();
-    oprot_ = oprot.get();
-  }
- public:
-  boost::shared_ptr< ::apache::thrift::protocol::TProtocol> getInputProtocol() {
-    return piprot_;
-  }
-  boost::shared_ptr< ::apache::thrift::protocol::TProtocol> getOutputProtocol() {
-    return poprot_;
-  }
-  int32_t get_answer(const int32_t number);
-  void send_get_answer(const int32_t number);
-  int32_t recv_get_answer();
-  void get_blob(std::string& _return);
-  void send_get_blob();
-  void recv_get_blob(std::string& _return);
- protected:
-  boost::shared_ptr< ::apache::thrift::protocol::TProtocol> piprot_;
-  boost::shared_ptr< ::apache::thrift::protocol::TProtocol> poprot_;
-  ::apache::thrift::protocol::TProtocol* iprot_;
-  ::apache::thrift::protocol::TProtocol* oprot_;
-};
-
-class ThriftServiceBenchmarkProcessor : public ::apache::thrift::TDispatchProcessor {
- protected:
-  boost::shared_ptr<ThriftServiceBenchmarkIf> iface_;
-  virtual bool dispatchCall(::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, const std::string& fname, int32_t seqid, void* callContext);
- private:
-  typedef  void (ThriftServiceBenchmarkProcessor::*ProcessFunction)(int32_t, ::apache::thrift::protocol::TProtocol*, ::apache::thrift::protocol::TProtocol*, void*);
-  typedef std::map<std::string, ProcessFunction> ProcessMap;
-  ProcessMap processMap_;
-  void process_get_answer(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
-  void process_get_blob(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
- public:
-  ThriftServiceBenchmarkProcessor(boost::shared_ptr<ThriftServiceBenchmarkIf> iface) :
-    iface_(iface) {
-    processMap_["get_answer"] = &ThriftServiceBenchmarkProcessor::process_get_answer;
-    processMap_["get_blob"] = &ThriftServiceBenchmarkProcessor::process_get_blob;
-  }
-
-  virtual ~ThriftServiceBenchmarkProcessor() {}
-};
-
-class ThriftServiceBenchmarkProcessorFactory : public ::apache::thrift::TProcessorFactory {
- public:
-  ThriftServiceBenchmarkProcessorFactory(const ::boost::shared_ptr< ThriftServiceBenchmarkIfFactory >& handlerFactory) :
-      handlerFactory_(handlerFactory) {}
-
-  ::boost::shared_ptr< ::apache::thrift::TProcessor > getProcessor(const ::apache::thrift::TConnectionInfo& connInfo);
-
- protected:
-  ::boost::shared_ptr< ThriftServiceBenchmarkIfFactory > handlerFactory_;
-};
-
-class ThriftServiceBenchmarkMultiface : virtual public ThriftServiceBenchmarkIf {
- public:
-  ThriftServiceBenchmarkMultiface(std::vector<boost::shared_ptr<ThriftServiceBenchmarkIf> >& ifaces) : ifaces_(ifaces) {
-  }
-  virtual ~ThriftServiceBenchmarkMultiface() {}
- protected:
-  std::vector<boost::shared_ptr<ThriftServiceBenchmarkIf> > ifaces_;
-  ThriftServiceBenchmarkMultiface() {}
-  void add(boost::shared_ptr<ThriftServiceBenchmarkIf> iface) {
-    ifaces_.push_back(iface);
-  }
- public:
-  int32_t get_answer(const int32_t number) {
-    size_t sz = ifaces_.size();
-    size_t i = 0;
-    for (; i < (sz - 1); ++i) {
-      ifaces_[i]->get_answer(number);
-    }
-    return ifaces_[i]->get_answer(number);
-  }
-
-  void get_blob(std::string& _return) {
-    size_t sz = ifaces_.size();
-    size_t i = 0;
-    for (; i < (sz - 1); ++i) {
-      ifaces_[i]->get_blob(_return);
-    }
-    ifaces_[i]->get_blob(_return);
-    return;
-  }
-
-};
-
-// The 'concurrent' client is a thread safe client that correctly handles
-// out of order responses.  It is slower than the regular client, so should
-// only be used when you need to share a connection among multiple threads
-class ThriftServiceBenchmarkConcurrentClient : virtual public ThriftServiceBenchmarkIf {
- public:
-  ThriftServiceBenchmarkConcurrentClient(boost::shared_ptr< ::apache::thrift::protocol::TProtocol> prot) {
-    setProtocol(prot);
-  }
-  ThriftServiceBenchmarkConcurrentClient(boost::shared_ptr< ::apache::thrift::protocol::TProtocol> iprot, boost::shared_ptr< ::apache::thrift::protocol::TProtocol> oprot) {
-    setProtocol(iprot,oprot);
-  }
- private:
-  void setProtocol(boost::shared_ptr< ::apache::thrift::protocol::TProtocol> prot) {
-  setProtocol(prot,prot);
-  }
-  void setProtocol(boost::shared_ptr< ::apache::thrift::protocol::TProtocol> iprot, boost::shared_ptr< ::apache::thrift::protocol::TProtocol> oprot) {
-    piprot_=iprot;
-    poprot_=oprot;
-    iprot_ = iprot.get();
-    oprot_ = oprot.get();
-  }
- public:
-  boost::shared_ptr< ::apache::thrift::protocol::TProtocol> getInputProtocol() {
-    return piprot_;
-  }
-  boost::shared_ptr< ::apache::thrift::protocol::TProtocol> getOutputProtocol() {
-    return poprot_;
-  }
-  int32_t get_answer(const int32_t number);
-  int32_t send_get_answer(const int32_t number);
-  int32_t recv_get_answer(const int32_t seqid);
-  void get_blob(std::string& _return);
-  int32_t send_get_blob();
-  void recv_get_blob(std::string& _return, const int32_t seqid);
- protected:
-  boost::shared_ptr< ::apache::thrift::protocol::TProtocol> piprot_;
-  boost::shared_ptr< ::apache::thrift::protocol::TProtocol> poprot_;
-  ::apache::thrift::protocol::TProtocol* iprot_;
-  ::apache::thrift::protocol::TProtocol* oprot_;
-  ::apache::thrift::async::TConcurrentClientSyncInfo sync_;
-};
-
-#ifdef _WIN32
-  #pragma warning( pop )
-#endif
-
-
-
-#endif
diff --git a/include/thrift/fixture.h b/include/thrift/fixture.h
deleted file mode 100644
index 7f6130a..0000000
--- a/include/thrift/fixture.h
+++ /dev/null
@@ -1,93 +0,0 @@
-#pragma once
-
-#ifndef FIXTURE_H_ALZERDCI
-#define FIXTURE_H_ALZERDCI
-
-#include <atomic>
-#include <chrono>
-#include <thread>
-
-#include "benchmark/benchmark.h"
-
-#include "ThriftServiceBenchmark.h"
-#include "thrift/protocol/TBinaryProtocol.h"
-#include "thrift/server/TSimpleServer.h"
-#include "thrift/transport/TBufferTransports.h"
-#include "thrift/transport/TServerSocket.h"
-#include "thrift/transport/TSocket.h"
-#include "thrift/transport/TTransportUtils.h"
-
-#include "target_code.h"
-
-static constexpr uint16_t thrift_port = 8083;
-
-class thrift_server : virtual public ThriftServiceBenchmarkIf {
-public:
-  int32_t get_answer(const int32_t number) override {
-    return ::get_answer(number);
-  }
-  void get_blob(std::string &_return) override { _return = ::get_blob(blob_size); }
-  int blob_size;
-};
-
-class thrift_bench : public benchmark::Fixture {
-public:
-  thrift_bench()
-      : handler(new thrift_server),
-        processor(new ThriftServiceBenchmarkProcessor(handler)),
-        serverTransport(
-            new apache::thrift::transport::TServerSocket(thrift_port)),
-        transportFactory(
-            new apache::thrift::transport::TBufferedTransportFactory()),
-        protocolFactory(new apache::thrift::protocol::TBinaryProtocolFactory()),
-        clientSocket(
-            new apache::thrift::transport::TSocket("127.0.0.1", thrift_port)),
-        clientTransport(
-            new apache::thrift::transport::TBufferedTransport(clientSocket)),
-        clientProtocol(
-            new apache::thrift::protocol::TBinaryProtocol(clientTransport)),
-        client(clientProtocol),
-        server(processor, serverTransport, transportFactory, protocolFactory) {
-    std::thread serve_thread([this]() {
-      server_running = true;
-      server.serve();
-      server_running = false;
-    });
-    std::this_thread::sleep_for(std::chrono::milliseconds(50));
-    clientTransport->open();
-    serve_thread.detach();
-  }
-
-  ~thrift_bench() override {
-    clientTransport->close();
-    server.stop();
-    while (server_running)
-      ;
-  }
-
-  void get_answer(int param) {
-    (void)param;
-    int a;
-    benchmark::DoNotOptimize(a = client.get_answer(23));
-  }
-
-  void get_blob(int param) {
-    handler->blob_size = param;
-    std::string s;
-    client.get_blob(s);
-  }
-
-  boost::shared_ptr<thrift_server> handler;
-  boost::shared_ptr<apache::thrift::TProcessor> processor;
-  boost::shared_ptr<apache::thrift::server::TServerTransport> serverTransport;
-  boost::shared_ptr<apache::thrift::server::TTransportFactory> transportFactory;
-  boost::shared_ptr<apache::thrift::protocol::TProtocolFactory> protocolFactory;
-  boost::shared_ptr<apache::thrift::protocol::TTransport> clientSocket;
-  boost::shared_ptr<apache::thrift::protocol::TTransport> clientTransport;
-  boost::shared_ptr<apache::thrift::protocol::TProtocol> clientProtocol;
-  ThriftServiceBenchmarkClient client;
-  apache::thrift::server::TSimpleServer server;
-  std::atomic_bool server_running;
-};
-
-#endif /* end of include guard: FIXTURE_H_ALZERDCI */
diff --git a/include/thrift/thrift_service_constants.h b/include/thrift/thrift_service_constants.h
deleted file mode 100644
index bbd5b28..0000000
--- a/include/thrift/thrift_service_constants.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Autogenerated by Thrift Compiler (0.9.3)
- *
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- *  @generated
- */
-#ifndef thrift_service_CONSTANTS_H
-#define thrift_service_CONSTANTS_H
-
-#include "thrift_service_types.h"
-
-
-
-class thrift_serviceConstants {
- public:
-  thrift_serviceConstants();
-
-};
-
-extern const thrift_serviceConstants g_thrift_service_constants;
-
-
-
-#endif
diff --git a/include/thrift/thrift_service_types.h b/include/thrift/thrift_service_types.h
deleted file mode 100644
index 23dbd23..0000000
--- a/include/thrift/thrift_service_types.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Autogenerated by Thrift Compiler (0.9.3)
- *
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- *  @generated
- */
-#ifndef thrift_service_TYPES_H
-#define thrift_service_TYPES_H
-
-#include <iosfwd>
-
-#include <thrift/Thrift.h>
-#include <thrift/TApplicationException.h>
-#include <thrift/protocol/TProtocol.h>
-#include <thrift/transport/TTransport.h>
-
-#include <thrift/cxxfunctional.h>
-
-
-
-
-
-
-#endif
diff --git a/src/benchmark.cc b/src/benchmark.cc
index 335a88f..3de329f 100644
--- a/src/benchmark.cc
+++ b/src/benchmark.cc
@@ -1,18 +1,7 @@
 #include "benchmark/benchmark.h"
 
 #include "target_code.h"
-
-#include "capnp/fixture.h"
-#include "direct/fixture.h"
 #include "grpc/fixture.h"
-#include "rpclib/fixture.h"
-#include "thrift/fixture.h"
-
-//#define BACKWARD_HAS_DW 1
-#define BACKWARD_HAS_BFD 1
-#include "backward/backward.hpp"
-
-int capnp_bench::blob_size_ = 0;
 
 #define MAKE_BENCHMARK(FixtureName, Benchmark)                                 \
   BENCHMARK_DEFINE_F(FixtureName, Benchmark)(benchmark::State & st) {          \
@@ -23,28 +12,11 @@ int capnp_bench::blob_size_ = 0;
   }                                                                            \
   BENCHMARK_REGISTER_F(FixtureName, Benchmark)
 
-namespace backward {
-
-backward::SignalHandling sh;
-
-} // namespace backward
-// MAKE_BENCHMARK(direct_bench, get_answer)
-
 constexpr std::size_t min_size = 4 << 10;
 constexpr std::size_t max_size = 32 << 10 << 10;
 constexpr std::size_t multiplier = 4;
 
-MAKE_BENCHMARK(direct_bench, get_blob)->RangeMultiplier(multiplier)->Range(min_size, max_size);
-MAKE_BENCHMARK(rpclib_bench, get_blob)->RangeMultiplier(multiplier)->Range(min_size, max_size);
-MAKE_BENCHMARK(capnp_bench, get_blob)->RangeMultiplier(multiplier)->Range(min_size, max_size);
-MAKE_BENCHMARK(thrift_bench, get_blob)->RangeMultiplier(multiplier)->Range(min_size, max_size);
 MAKE_BENCHMARK(grpc_bench, get_blob)->RangeMultiplier(multiplier)->Range(min_size, max_size);
-//MAKE_BENCHMARK(rpclib_bench, get_answer)
-//MAKE_BENCHMARK(capnp_bench, get_answer)
-//MAKE_BENCHMARK(capnp_bench, get_blob);
-// MAKE_BENCHMARK(thrift_bench, get_answer)
-//MAKE_BENCHMARK(thrift_bench, get_blob);
-// MAKE_BENCHMARK(grpc_bench, get_answer)
 
 int main(int argc, char *argv[]) {
   printf("Initalizing blob cache...\n");
diff --git a/src/capnp/capnp_service.capnp.cc b/src/capnp/capnp_service.capnp.cc
deleted file mode 100644
index e51415e..0000000
--- a/src/capnp/capnp_service.capnp.cc
+++ /dev/null
@@ -1,344 +0,0 @@
-// Generated by Cap'n Proto compiler, DO NOT EDIT
-// source: capnp_service.capnp
-
-#include "capnp_service.capnp.h"
-
-namespace capnp {
-namespace schemas {
-static const ::capnp::_::AlignedData<42> b_b06fe64f26aed999 = {
-  {   0,   0,   0,   0,   5,   0,   6,   0,
-    153, 217, 174,  38,  79, 230, 111, 176,
-     20,   0,   0,   0,   3,   0,   0,   0,
-     20, 225, 251,  94,  15, 126, 133, 212,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     21,   0,   0,   0,  82,   1,   0,   0,
-     41,   0,   0,   0,   7,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     37,   0,   0,   0, 135,   0,   0,   0,
-    121,   0,   0,   0,   7,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     99,  97, 112, 110, 112,  95, 115, 101,
-    114, 118, 105,  99, 101,  46,  99,  97,
-    112, 110, 112,  58,  67,  97, 112, 110,
-    112,  83, 101, 114, 118, 105,  99, 101,
-     66, 101, 110,  99, 104, 109,  97, 114,
-    107,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   1,   0,   1,   0,
-      8,   0,   0,   0,   3,   0,   5,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-    243, 243, 241, 103, 116, 104, 173, 166,
-     29,  68, 126, 239,  92, 187, 140, 245,
-     49,   0,   0,   0,  82,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     41,   0,   0,   0,   7,   0,   0,   0,
-      1,   0,   0,   0,   0,   0,   0,   0,
-    177, 139, 254,  35,  38, 214,   4, 240,
-     78,  64,  26, 127, 167, 154, 233, 134,
-     29,   0,   0,   0,  66,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     17,   0,   0,   0,   7,   0,   0,   0,
-    103, 101, 116,  65, 110, 115, 119, 101,
-    114,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   1,   0,
-    103, 101, 116,  66, 108, 111,  98,   0,
-      0,   0,   0,   0,   0,   0,   1,   0,
-      0,   0,   0,   0,   1,   0,   1,   0, }
-};
-::capnp::word const* const bp_b06fe64f26aed999 = b_b06fe64f26aed999.words;
-#if !CAPNP_LITE
-static const ::capnp::_::RawSchema* const d_b06fe64f26aed999[] = {
-  &s_86e99aa77f1a404e,
-  &s_a6ad687467f1f3f3,
-  &s_f004d62623fe8bb1,
-  &s_f58cbb5cef7e441d,
-};
-static const uint16_t m_b06fe64f26aed999[] = {0, 1};
-const ::capnp::_::RawSchema s_b06fe64f26aed999 = {
-  0xb06fe64f26aed999, b_b06fe64f26aed999.words, 42, d_b06fe64f26aed999, m_b06fe64f26aed999,
-  4, 2, nullptr, nullptr, nullptr, { &s_b06fe64f26aed999, nullptr, nullptr, 0, 0, nullptr }
-};
-#endif  // !CAPNP_LITE
-static const ::capnp::_::AlignedData<36> b_a6ad687467f1f3f3 = {
-  {   0,   0,   0,   0,   5,   0,   6,   0,
-    243, 243, 241, 103, 116, 104, 173, 166,
-     42,   0,   0,   0,   1,   0,   1,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   7,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     21,   0,   0,   0, 218,   1,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     41,   0,   0,   0,  63,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     99,  97, 112, 110, 112,  95, 115, 101,
-    114, 118, 105,  99, 101,  46,  99,  97,
-    112, 110, 112,  58,  67,  97, 112, 110,
-    112,  83, 101, 114, 118, 105,  99, 101,
-     66, 101, 110,  99, 104, 109,  97, 114,
-    107,  46, 103, 101, 116,  65, 110, 115,
-    119, 101, 114,  36,  80,  97, 114,  97,
-    109, 115,   0,   0,   0,   0,   0,   0,
-      4,   0,   0,   0,   3,   0,   4,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   1,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     13,   0,   0,   0,  58,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      8,   0,   0,   0,   3,   0,   1,   0,
-     20,   0,   0,   0,   2,   0,   1,   0,
-    110, 117, 109,  98, 101, 114,   0,   0,
-      4,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      4,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0, }
-};
-::capnp::word const* const bp_a6ad687467f1f3f3 = b_a6ad687467f1f3f3.words;
-#if !CAPNP_LITE
-static const uint16_t m_a6ad687467f1f3f3[] = {0};
-static const uint16_t i_a6ad687467f1f3f3[] = {0};
-const ::capnp::_::RawSchema s_a6ad687467f1f3f3 = {
-  0xa6ad687467f1f3f3, b_a6ad687467f1f3f3.words, 36, nullptr, m_a6ad687467f1f3f3,
-  0, 1, i_a6ad687467f1f3f3, nullptr, nullptr, { &s_a6ad687467f1f3f3, nullptr, nullptr, 0, 0, nullptr }
-};
-#endif  // !CAPNP_LITE
-static const ::capnp::_::AlignedData<36> b_f58cbb5cef7e441d = {
-  {   0,   0,   0,   0,   5,   0,   6,   0,
-     29,  68, 126, 239,  92, 187, 140, 245,
-     42,   0,   0,   0,   1,   0,   1,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   7,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     21,   0,   0,   0, 226,   1,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     41,   0,   0,   0,  63,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     99,  97, 112, 110, 112,  95, 115, 101,
-    114, 118, 105,  99, 101,  46,  99,  97,
-    112, 110, 112,  58,  67,  97, 112, 110,
-    112,  83, 101, 114, 118, 105,  99, 101,
-     66, 101, 110,  99, 104, 109,  97, 114,
-    107,  46, 103, 101, 116,  65, 110, 115,
-    119, 101, 114,  36,  82, 101, 115, 117,
-    108, 116, 115,   0,   0,   0,   0,   0,
-      4,   0,   0,   0,   3,   0,   4,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   1,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     13,   0,   0,   0,  58,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      8,   0,   0,   0,   3,   0,   1,   0,
-     20,   0,   0,   0,   2,   0,   1,   0,
-    114, 101, 115, 117, 108, 116,   0,   0,
-      4,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      4,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0, }
-};
-::capnp::word const* const bp_f58cbb5cef7e441d = b_f58cbb5cef7e441d.words;
-#if !CAPNP_LITE
-static const uint16_t m_f58cbb5cef7e441d[] = {0};
-static const uint16_t i_f58cbb5cef7e441d[] = {0};
-const ::capnp::_::RawSchema s_f58cbb5cef7e441d = {
-  0xf58cbb5cef7e441d, b_f58cbb5cef7e441d.words, 36, nullptr, m_f58cbb5cef7e441d,
-  0, 1, i_f58cbb5cef7e441d, nullptr, nullptr, { &s_f58cbb5cef7e441d, nullptr, nullptr, 0, 0, nullptr }
-};
-#endif  // !CAPNP_LITE
-static const ::capnp::_::AlignedData<20> b_f004d62623fe8bb1 = {
-  {   0,   0,   0,   0,   5,   0,   6,   0,
-    177, 139, 254,  35,  38, 214,   4, 240,
-     42,   0,   0,   0,   1,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   7,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     21,   0,   0,   0, 202,   1,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     99,  97, 112, 110, 112,  95, 115, 101,
-    114, 118, 105,  99, 101,  46,  99,  97,
-    112, 110, 112,  58,  67,  97, 112, 110,
-    112,  83, 101, 114, 118, 105,  99, 101,
-     66, 101, 110,  99, 104, 109,  97, 114,
-    107,  46, 103, 101, 116,  66, 108, 111,
-     98,  36,  80,  97, 114,  97, 109, 115,
-      0,   0,   0,   0,   0,   0,   0,   0, }
-};
-::capnp::word const* const bp_f004d62623fe8bb1 = b_f004d62623fe8bb1.words;
-#if !CAPNP_LITE
-const ::capnp::_::RawSchema s_f004d62623fe8bb1 = {
-  0xf004d62623fe8bb1, b_f004d62623fe8bb1.words, 20, nullptr, nullptr,
-  0, 0, nullptr, nullptr, nullptr, { &s_f004d62623fe8bb1, nullptr, nullptr, 0, 0, nullptr }
-};
-#endif  // !CAPNP_LITE
-static const ::capnp::_::AlignedData<36> b_86e99aa77f1a404e = {
-  {   0,   0,   0,   0,   5,   0,   6,   0,
-     78,  64,  26, 127, 167, 154, 233, 134,
-     42,   0,   0,   0,   1,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      1,   0,   7,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     21,   0,   0,   0, 210,   1,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     41,   0,   0,   0,  63,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     99,  97, 112, 110, 112,  95, 115, 101,
-    114, 118, 105,  99, 101,  46,  99,  97,
-    112, 110, 112,  58,  67,  97, 112, 110,
-    112,  83, 101, 114, 118, 105,  99, 101,
-     66, 101, 110,  99, 104, 109,  97, 114,
-    107,  46, 103, 101, 116,  66, 108, 111,
-     98,  36,  82, 101, 115, 117, 108, 116,
-    115,   0,   0,   0,   0,   0,   0,   0,
-      4,   0,   0,   0,   3,   0,   4,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   1,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     13,   0,   0,   0,  58,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      8,   0,   0,   0,   3,   0,   1,   0,
-     20,   0,   0,   0,   2,   0,   1,   0,
-    114, 101, 115, 117, 108, 116,   0,   0,
-     13,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-     13,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0, }
-};
-::capnp::word const* const bp_86e99aa77f1a404e = b_86e99aa77f1a404e.words;
-#if !CAPNP_LITE
-static const uint16_t m_86e99aa77f1a404e[] = {0};
-static const uint16_t i_86e99aa77f1a404e[] = {0};
-const ::capnp::_::RawSchema s_86e99aa77f1a404e = {
-  0x86e99aa77f1a404e, b_86e99aa77f1a404e.words, 36, nullptr, m_86e99aa77f1a404e,
-  0, 1, i_86e99aa77f1a404e, nullptr, nullptr, { &s_86e99aa77f1a404e, nullptr, nullptr, 0, 0, nullptr }
-};
-#endif  // !CAPNP_LITE
-}  // namespace schemas
-}  // namespace capnp
-
-// =======================================================================================
-
-
-#if !CAPNP_LITE
-::capnp::Request< ::CapnpServiceBenchmark::GetAnswerParams,  ::CapnpServiceBenchmark::GetAnswerResults>
-CapnpServiceBenchmark::Client::getAnswerRequest(::kj::Maybe< ::capnp::MessageSize> sizeHint) {
-  return newCall< ::CapnpServiceBenchmark::GetAnswerParams,  ::CapnpServiceBenchmark::GetAnswerResults>(
-      0xb06fe64f26aed999ull, 0, sizeHint);
-}
-::kj::Promise<void> CapnpServiceBenchmark::Server::getAnswer(GetAnswerContext) {
-  return ::capnp::Capability::Server::internalUnimplemented(
-      "capnp_service.capnp:CapnpServiceBenchmark", "getAnswer",
-      0xb06fe64f26aed999ull, 0);
-}
-::capnp::Request< ::CapnpServiceBenchmark::GetBlobParams,  ::CapnpServiceBenchmark::GetBlobResults>
-CapnpServiceBenchmark::Client::getBlobRequest(::kj::Maybe< ::capnp::MessageSize> sizeHint) {
-  return newCall< ::CapnpServiceBenchmark::GetBlobParams,  ::CapnpServiceBenchmark::GetBlobResults>(
-      0xb06fe64f26aed999ull, 1, sizeHint);
-}
-::kj::Promise<void> CapnpServiceBenchmark::Server::getBlob(GetBlobContext) {
-  return ::capnp::Capability::Server::internalUnimplemented(
-      "capnp_service.capnp:CapnpServiceBenchmark", "getBlob",
-      0xb06fe64f26aed999ull, 1);
-}
-::kj::Promise<void> CapnpServiceBenchmark::Server::dispatchCall(
-    uint64_t interfaceId, uint16_t methodId,
-    ::capnp::CallContext< ::capnp::AnyPointer, ::capnp::AnyPointer> context) {
-  switch (interfaceId) {
-    case 0xb06fe64f26aed999ull:
-      return dispatchCallInternal(methodId, context);
-    default:
-      return internalUnimplemented("capnp_service.capnp:CapnpServiceBenchmark", interfaceId);
-  }
-}
-::kj::Promise<void> CapnpServiceBenchmark::Server::dispatchCallInternal(
-    uint16_t methodId,
-    ::capnp::CallContext< ::capnp::AnyPointer, ::capnp::AnyPointer> context) {
-  switch (methodId) {
-    case 0:
-      return getAnswer(::capnp::Capability::Server::internalGetTypedContext<
-           ::CapnpServiceBenchmark::GetAnswerParams,  ::CapnpServiceBenchmark::GetAnswerResults>(context));
-    case 1:
-      return getBlob(::capnp::Capability::Server::internalGetTypedContext<
-           ::CapnpServiceBenchmark::GetBlobParams,  ::CapnpServiceBenchmark::GetBlobResults>(context));
-    default:
-      (void)context;
-      return ::capnp::Capability::Server::internalUnimplemented(
-          "capnp_service.capnp:CapnpServiceBenchmark",
-          0xb06fe64f26aed999ull, methodId);
-  }
-}
-#endif  // !CAPNP_LITE
-
-// CapnpServiceBenchmark
-#if !CAPNP_LITE
-constexpr ::capnp::Kind CapnpServiceBenchmark::_capnpPrivate::kind;
-constexpr ::capnp::_::RawSchema const* CapnpServiceBenchmark::_capnpPrivate::schema;
-constexpr ::capnp::_::RawBrandedSchema const* CapnpServiceBenchmark::_capnpPrivate::brand;
-#endif  // !CAPNP_LITE
-
-// CapnpServiceBenchmark::GetAnswerParams
-#ifndef _MSC_VER
-constexpr uint16_t CapnpServiceBenchmark::GetAnswerParams::_capnpPrivate::dataWordSize;
-constexpr uint16_t CapnpServiceBenchmark::GetAnswerParams::_capnpPrivate::pointerCount;
-#endif
-#if !CAPNP_LITE
-constexpr ::capnp::Kind CapnpServiceBenchmark::GetAnswerParams::_capnpPrivate::kind;
-constexpr ::capnp::_::RawSchema const* CapnpServiceBenchmark::GetAnswerParams::_capnpPrivate::schema;
-constexpr ::capnp::_::RawBrandedSchema const* CapnpServiceBenchmark::GetAnswerParams::_capnpPrivate::brand;
-#endif  // !CAPNP_LITE
-
-// CapnpServiceBenchmark::GetAnswerResults
-#ifndef _MSC_VER
-constexpr uint16_t CapnpServiceBenchmark::GetAnswerResults::_capnpPrivate::dataWordSize;
-constexpr uint16_t CapnpServiceBenchmark::GetAnswerResults::_capnpPrivate::pointerCount;
-#endif
-#if !CAPNP_LITE
-constexpr ::capnp::Kind CapnpServiceBenchmark::GetAnswerResults::_capnpPrivate::kind;
-constexpr ::capnp::_::RawSchema const* CapnpServiceBenchmark::GetAnswerResults::_capnpPrivate::schema;
-constexpr ::capnp::_::RawBrandedSchema const* CapnpServiceBenchmark::GetAnswerResults::_capnpPrivate::brand;
-#endif  // !CAPNP_LITE
-
-// CapnpServiceBenchmark::GetBlobParams
-#ifndef _MSC_VER
-constexpr uint16_t CapnpServiceBenchmark::GetBlobParams::_capnpPrivate::dataWordSize;
-constexpr uint16_t CapnpServiceBenchmark::GetBlobParams::_capnpPrivate::pointerCount;
-#endif
-#if !CAPNP_LITE
-constexpr ::capnp::Kind CapnpServiceBenchmark::GetBlobParams::_capnpPrivate::kind;
-constexpr ::capnp::_::RawSchema const* CapnpServiceBenchmark::GetBlobParams::_capnpPrivate::schema;
-constexpr ::capnp::_::RawBrandedSchema const* CapnpServiceBenchmark::GetBlobParams::_capnpPrivate::brand;
-#endif  // !CAPNP_LITE
-
-// CapnpServiceBenchmark::GetBlobResults
-#ifndef _MSC_VER
-constexpr uint16_t CapnpServiceBenchmark::GetBlobResults::_capnpPrivate::dataWordSize;
-constexpr uint16_t CapnpServiceBenchmark::GetBlobResults::_capnpPrivate::pointerCount;
-#endif
-#if !CAPNP_LITE
-constexpr ::capnp::Kind CapnpServiceBenchmark::GetBlobResults::_capnpPrivate::kind;
-constexpr ::capnp::_::RawSchema const* CapnpServiceBenchmark::GetBlobResults::_capnpPrivate::schema;
-constexpr ::capnp::_::RawBrandedSchema const* CapnpServiceBenchmark::GetBlobResults::_capnpPrivate::brand;
-#endif  // !CAPNP_LITE
-
-
-
diff --git a/src/thrift/ThriftServiceBenchmark.cpp b/src/thrift/ThriftServiceBenchmark.cpp
deleted file mode 100644
index 321fdcd..0000000
--- a/src/thrift/ThriftServiceBenchmark.cpp
+++ /dev/null
@@ -1,781 +0,0 @@
-/**
- * Autogenerated by Thrift Compiler (0.9.3)
- *
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- *  @generated
- */
-#include "ThriftServiceBenchmark.h"
-
-
-
-
-ThriftServiceBenchmark_get_answer_args::~ThriftServiceBenchmark_get_answer_args() throw() {
-}
-
-
-uint32_t ThriftServiceBenchmark_get_answer_args::read(::apache::thrift::protocol::TProtocol* iprot) {
-
-  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
-  uint32_t xfer = 0;
-  std::string fname;
-  ::apache::thrift::protocol::TType ftype;
-  int16_t fid;
-
-  xfer += iprot->readStructBegin(fname);
-
-  using ::apache::thrift::protocol::TProtocolException;
-
-
-  while (true)
-  {
-    xfer += iprot->readFieldBegin(fname, ftype, fid);
-    if (ftype == ::apache::thrift::protocol::T_STOP) {
-      break;
-    }
-    switch (fid)
-    {
-      case 1:
-        if (ftype == ::apache::thrift::protocol::T_I32) {
-          xfer += iprot->readI32(this->number);
-          this->__isset.number = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      default:
-        xfer += iprot->skip(ftype);
-        break;
-    }
-    xfer += iprot->readFieldEnd();
-  }
-
-  xfer += iprot->readStructEnd();
-
-  return xfer;
-}
-
-uint32_t ThriftServiceBenchmark_get_answer_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
-  uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
-  xfer += oprot->writeStructBegin("ThriftServiceBenchmark_get_answer_args");
-
-  xfer += oprot->writeFieldBegin("number", ::apache::thrift::protocol::T_I32, 1);
-  xfer += oprot->writeI32(this->number);
-  xfer += oprot->writeFieldEnd();
-
-  xfer += oprot->writeFieldStop();
-  xfer += oprot->writeStructEnd();
-  return xfer;
-}
-
-
-ThriftServiceBenchmark_get_answer_pargs::~ThriftServiceBenchmark_get_answer_pargs() throw() {
-}
-
-
-uint32_t ThriftServiceBenchmark_get_answer_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
-  uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
-  xfer += oprot->writeStructBegin("ThriftServiceBenchmark_get_answer_pargs");
-
-  xfer += oprot->writeFieldBegin("number", ::apache::thrift::protocol::T_I32, 1);
-  xfer += oprot->writeI32((*(this->number)));
-  xfer += oprot->writeFieldEnd();
-
-  xfer += oprot->writeFieldStop();
-  xfer += oprot->writeStructEnd();
-  return xfer;
-}
-
-
-ThriftServiceBenchmark_get_answer_result::~ThriftServiceBenchmark_get_answer_result() throw() {
-}
-
-
-uint32_t ThriftServiceBenchmark_get_answer_result::read(::apache::thrift::protocol::TProtocol* iprot) {
-
-  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
-  uint32_t xfer = 0;
-  std::string fname;
-  ::apache::thrift::protocol::TType ftype;
-  int16_t fid;
-
-  xfer += iprot->readStructBegin(fname);
-
-  using ::apache::thrift::protocol::TProtocolException;
-
-
-  while (true)
-  {
-    xfer += iprot->readFieldBegin(fname, ftype, fid);
-    if (ftype == ::apache::thrift::protocol::T_STOP) {
-      break;
-    }
-    switch (fid)
-    {
-      case 0:
-        if (ftype == ::apache::thrift::protocol::T_I32) {
-          xfer += iprot->readI32(this->success);
-          this->__isset.success = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      default:
-        xfer += iprot->skip(ftype);
-        break;
-    }
-    xfer += iprot->readFieldEnd();
-  }
-
-  xfer += iprot->readStructEnd();
-
-  return xfer;
-}
-
-uint32_t ThriftServiceBenchmark_get_answer_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
-
-  uint32_t xfer = 0;
-
-  xfer += oprot->writeStructBegin("ThriftServiceBenchmark_get_answer_result");
-
-  if (this->__isset.success) {
-    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_I32, 0);
-    xfer += oprot->writeI32(this->success);
-    xfer += oprot->writeFieldEnd();
-  }
-  xfer += oprot->writeFieldStop();
-  xfer += oprot->writeStructEnd();
-  return xfer;
-}
-
-
-ThriftServiceBenchmark_get_answer_presult::~ThriftServiceBenchmark_get_answer_presult() throw() {
-}
-
-
-uint32_t ThriftServiceBenchmark_get_answer_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
-
-  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
-  uint32_t xfer = 0;
-  std::string fname;
-  ::apache::thrift::protocol::TType ftype;
-  int16_t fid;
-
-  xfer += iprot->readStructBegin(fname);
-
-  using ::apache::thrift::protocol::TProtocolException;
-
-
-  while (true)
-  {
-    xfer += iprot->readFieldBegin(fname, ftype, fid);
-    if (ftype == ::apache::thrift::protocol::T_STOP) {
-      break;
-    }
-    switch (fid)
-    {
-      case 0:
-        if (ftype == ::apache::thrift::protocol::T_I32) {
-          xfer += iprot->readI32((*(this->success)));
-          this->__isset.success = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      default:
-        xfer += iprot->skip(ftype);
-        break;
-    }
-    xfer += iprot->readFieldEnd();
-  }
-
-  xfer += iprot->readStructEnd();
-
-  return xfer;
-}
-
-
-ThriftServiceBenchmark_get_blob_args::~ThriftServiceBenchmark_get_blob_args() throw() {
-}
-
-
-uint32_t ThriftServiceBenchmark_get_blob_args::read(::apache::thrift::protocol::TProtocol* iprot) {
-
-  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
-  uint32_t xfer = 0;
-  std::string fname;
-  ::apache::thrift::protocol::TType ftype;
-  int16_t fid;
-
-  xfer += iprot->readStructBegin(fname);
-
-  using ::apache::thrift::protocol::TProtocolException;
-
-
-  while (true)
-  {
-    xfer += iprot->readFieldBegin(fname, ftype, fid);
-    if (ftype == ::apache::thrift::protocol::T_STOP) {
-      break;
-    }
-    xfer += iprot->skip(ftype);
-    xfer += iprot->readFieldEnd();
-  }
-
-  xfer += iprot->readStructEnd();
-
-  return xfer;
-}
-
-uint32_t ThriftServiceBenchmark_get_blob_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
-  uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
-  xfer += oprot->writeStructBegin("ThriftServiceBenchmark_get_blob_args");
-
-  xfer += oprot->writeFieldStop();
-  xfer += oprot->writeStructEnd();
-  return xfer;
-}
-
-
-ThriftServiceBenchmark_get_blob_pargs::~ThriftServiceBenchmark_get_blob_pargs() throw() {
-}
-
-
-uint32_t ThriftServiceBenchmark_get_blob_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
-  uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
-  xfer += oprot->writeStructBegin("ThriftServiceBenchmark_get_blob_pargs");
-
-  xfer += oprot->writeFieldStop();
-  xfer += oprot->writeStructEnd();
-  return xfer;
-}
-
-
-ThriftServiceBenchmark_get_blob_result::~ThriftServiceBenchmark_get_blob_result() throw() {
-}
-
-
-uint32_t ThriftServiceBenchmark_get_blob_result::read(::apache::thrift::protocol::TProtocol* iprot) {
-
-  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
-  uint32_t xfer = 0;
-  std::string fname;
-  ::apache::thrift::protocol::TType ftype;
-  int16_t fid;
-
-  xfer += iprot->readStructBegin(fname);
-
-  using ::apache::thrift::protocol::TProtocolException;
-
-
-  while (true)
-  {
-    xfer += iprot->readFieldBegin(fname, ftype, fid);
-    if (ftype == ::apache::thrift::protocol::T_STOP) {
-      break;
-    }
-    switch (fid)
-    {
-      case 0:
-        if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readBinary(this->success);
-          this->__isset.success = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      default:
-        xfer += iprot->skip(ftype);
-        break;
-    }
-    xfer += iprot->readFieldEnd();
-  }
-
-  xfer += iprot->readStructEnd();
-
-  return xfer;
-}
-
-uint32_t ThriftServiceBenchmark_get_blob_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
-
-  uint32_t xfer = 0;
-
-  xfer += oprot->writeStructBegin("ThriftServiceBenchmark_get_blob_result");
-
-  if (this->__isset.success) {
-    xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRING, 0);
-    xfer += oprot->writeBinary(this->success);
-    xfer += oprot->writeFieldEnd();
-  }
-  xfer += oprot->writeFieldStop();
-  xfer += oprot->writeStructEnd();
-  return xfer;
-}
-
-
-ThriftServiceBenchmark_get_blob_presult::~ThriftServiceBenchmark_get_blob_presult() throw() {
-}
-
-
-uint32_t ThriftServiceBenchmark_get_blob_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
-
-  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
-  uint32_t xfer = 0;
-  std::string fname;
-  ::apache::thrift::protocol::TType ftype;
-  int16_t fid;
-
-  xfer += iprot->readStructBegin(fname);
-
-  using ::apache::thrift::protocol::TProtocolException;
-
-
-  while (true)
-  {
-    xfer += iprot->readFieldBegin(fname, ftype, fid);
-    if (ftype == ::apache::thrift::protocol::T_STOP) {
-      break;
-    }
-    switch (fid)
-    {
-      case 0:
-        if (ftype == ::apache::thrift::protocol::T_STRING) {
-          xfer += iprot->readBinary((*(this->success)));
-          this->__isset.success = true;
-        } else {
-          xfer += iprot->skip(ftype);
-        }
-        break;
-      default:
-        xfer += iprot->skip(ftype);
-        break;
-    }
-    xfer += iprot->readFieldEnd();
-  }
-
-  xfer += iprot->readStructEnd();
-
-  return xfer;
-}
-
-int32_t ThriftServiceBenchmarkClient::get_answer(const int32_t number)
-{
-  send_get_answer(number);
-  return recv_get_answer();
-}
-
-void ThriftServiceBenchmarkClient::send_get_answer(const int32_t number)
-{
-  int32_t cseqid = 0;
-  oprot_->writeMessageBegin("get_answer", ::apache::thrift::protocol::T_CALL, cseqid);
-
-  ThriftServiceBenchmark_get_answer_pargs args;
-  args.number = &number;
-  args.write(oprot_);
-
-  oprot_->writeMessageEnd();
-  oprot_->getTransport()->writeEnd();
-  oprot_->getTransport()->flush();
-}
-
-int32_t ThriftServiceBenchmarkClient::recv_get_answer()
-{
-
-  int32_t rseqid = 0;
-  std::string fname;
-  ::apache::thrift::protocol::TMessageType mtype;
-
-  iprot_->readMessageBegin(fname, mtype, rseqid);
-  if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
-    ::apache::thrift::TApplicationException x;
-    x.read(iprot_);
-    iprot_->readMessageEnd();
-    iprot_->getTransport()->readEnd();
-    throw x;
-  }
-  if (mtype != ::apache::thrift::protocol::T_REPLY) {
-    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
-    iprot_->readMessageEnd();
-    iprot_->getTransport()->readEnd();
-  }
-  if (fname.compare("get_answer") != 0) {
-    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
-    iprot_->readMessageEnd();
-    iprot_->getTransport()->readEnd();
-  }
-  int32_t _return;
-  ThriftServiceBenchmark_get_answer_presult result;
-  result.success = &_return;
-  result.read(iprot_);
-  iprot_->readMessageEnd();
-  iprot_->getTransport()->readEnd();
-
-  if (result.__isset.success) {
-    return _return;
-  }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "get_answer failed: unknown result");
-}
-
-void ThriftServiceBenchmarkClient::get_blob(std::string& _return)
-{
-  send_get_blob();
-  recv_get_blob(_return);
-}
-
-void ThriftServiceBenchmarkClient::send_get_blob()
-{
-  int32_t cseqid = 0;
-  oprot_->writeMessageBegin("get_blob", ::apache::thrift::protocol::T_CALL, cseqid);
-
-  ThriftServiceBenchmark_get_blob_pargs args;
-  args.write(oprot_);
-
-  oprot_->writeMessageEnd();
-  oprot_->getTransport()->writeEnd();
-  oprot_->getTransport()->flush();
-}
-
-void ThriftServiceBenchmarkClient::recv_get_blob(std::string& _return)
-{
-
-  int32_t rseqid = 0;
-  std::string fname;
-  ::apache::thrift::protocol::TMessageType mtype;
-
-  iprot_->readMessageBegin(fname, mtype, rseqid);
-  if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
-    ::apache::thrift::TApplicationException x;
-    x.read(iprot_);
-    iprot_->readMessageEnd();
-    iprot_->getTransport()->readEnd();
-    throw x;
-  }
-  if (mtype != ::apache::thrift::protocol::T_REPLY) {
-    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
-    iprot_->readMessageEnd();
-    iprot_->getTransport()->readEnd();
-  }
-  if (fname.compare("get_blob") != 0) {
-    iprot_->skip(::apache::thrift::protocol::T_STRUCT);
-    iprot_->readMessageEnd();
-    iprot_->getTransport()->readEnd();
-  }
-  ThriftServiceBenchmark_get_blob_presult result;
-  result.success = &_return;
-  result.read(iprot_);
-  iprot_->readMessageEnd();
-  iprot_->getTransport()->readEnd();
-
-  if (result.__isset.success) {
-    // _return pointer has now been filled
-    return;
-  }
-  throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "get_blob failed: unknown result");
-}
-
-bool ThriftServiceBenchmarkProcessor::dispatchCall(::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, const std::string& fname, int32_t seqid, void* callContext) {
-  ProcessMap::iterator pfn;
-  pfn = processMap_.find(fname);
-  if (pfn == processMap_.end()) {
-    iprot->skip(::apache::thrift::protocol::T_STRUCT);
-    iprot->readMessageEnd();
-    iprot->getTransport()->readEnd();
-    ::apache::thrift::TApplicationException x(::apache::thrift::TApplicationException::UNKNOWN_METHOD, "Invalid method name: '"+fname+"'");
-    oprot->writeMessageBegin(fname, ::apache::thrift::protocol::T_EXCEPTION, seqid);
-    x.write(oprot);
-    oprot->writeMessageEnd();
-    oprot->getTransport()->writeEnd();
-    oprot->getTransport()->flush();
-    return true;
-  }
-  (this->*(pfn->second))(seqid, iprot, oprot, callContext);
-  return true;
-}
-
-void ThriftServiceBenchmarkProcessor::process_get_answer(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext)
-{
-  void* ctx = NULL;
-  if (this->eventHandler_.get() != NULL) {
-    ctx = this->eventHandler_->getContext("ThriftServiceBenchmark.get_answer", callContext);
-  }
-  ::apache::thrift::TProcessorContextFreer freer(this->eventHandler_.get(), ctx, "ThriftServiceBenchmark.get_answer");
-
-  if (this->eventHandler_.get() != NULL) {
-    this->eventHandler_->preRead(ctx, "ThriftServiceBenchmark.get_answer");
-  }
-
-  ThriftServiceBenchmark_get_answer_args args;
-  args.read(iprot);
-  iprot->readMessageEnd();
-  uint32_t bytes = iprot->getTransport()->readEnd();
-
-  if (this->eventHandler_.get() != NULL) {
-    this->eventHandler_->postRead(ctx, "ThriftServiceBenchmark.get_answer", bytes);
-  }
-
-  ThriftServiceBenchmark_get_answer_result result;
-  try {
-    result.success = iface_->get_answer(args.number);
-    result.__isset.success = true;
-  } catch (const std::exception& e) {
-    if (this->eventHandler_.get() != NULL) {
-      this->eventHandler_->handlerError(ctx, "ThriftServiceBenchmark.get_answer");
-    }
-
-    ::apache::thrift::TApplicationException x(e.what());
-    oprot->writeMessageBegin("get_answer", ::apache::thrift::protocol::T_EXCEPTION, seqid);
-    x.write(oprot);
-    oprot->writeMessageEnd();
-    oprot->getTransport()->writeEnd();
-    oprot->getTransport()->flush();
-    return;
-  }
-
-  if (this->eventHandler_.get() != NULL) {
-    this->eventHandler_->preWrite(ctx, "ThriftServiceBenchmark.get_answer");
-  }
-
-  oprot->writeMessageBegin("get_answer", ::apache::thrift::protocol::T_REPLY, seqid);
-  result.write(oprot);
-  oprot->writeMessageEnd();
-  bytes = oprot->getTransport()->writeEnd();
-  oprot->getTransport()->flush();
-
-  if (this->eventHandler_.get() != NULL) {
-    this->eventHandler_->postWrite(ctx, "ThriftServiceBenchmark.get_answer", bytes);
-  }
-}
-
-void ThriftServiceBenchmarkProcessor::process_get_blob(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext)
-{
-  void* ctx = NULL;
-  if (this->eventHandler_.get() != NULL) {
-    ctx = this->eventHandler_->getContext("ThriftServiceBenchmark.get_blob", callContext);
-  }
-  ::apache::thrift::TProcessorContextFreer freer(this->eventHandler_.get(), ctx, "ThriftServiceBenchmark.get_blob");
-
-  if (this->eventHandler_.get() != NULL) {
-    this->eventHandler_->preRead(ctx, "ThriftServiceBenchmark.get_blob");
-  }
-
-  ThriftServiceBenchmark_get_blob_args args;
-  args.read(iprot);
-  iprot->readMessageEnd();
-  uint32_t bytes = iprot->getTransport()->readEnd();
-
-  if (this->eventHandler_.get() != NULL) {
-    this->eventHandler_->postRead(ctx, "ThriftServiceBenchmark.get_blob", bytes);
-  }
-
-  ThriftServiceBenchmark_get_blob_result result;
-  try {
-    iface_->get_blob(result.success);
-    result.__isset.success = true;
-  } catch (const std::exception& e) {
-    if (this->eventHandler_.get() != NULL) {
-      this->eventHandler_->handlerError(ctx, "ThriftServiceBenchmark.get_blob");
-    }
-
-    ::apache::thrift::TApplicationException x(e.what());
-    oprot->writeMessageBegin("get_blob", ::apache::thrift::protocol::T_EXCEPTION, seqid);
-    x.write(oprot);
-    oprot->writeMessageEnd();
-    oprot->getTransport()->writeEnd();
-    oprot->getTransport()->flush();
-    return;
-  }
-
-  if (this->eventHandler_.get() != NULL) {
-    this->eventHandler_->preWrite(ctx, "ThriftServiceBenchmark.get_blob");
-  }
-
-  oprot->writeMessageBegin("get_blob", ::apache::thrift::protocol::T_REPLY, seqid);
-  result.write(oprot);
-  oprot->writeMessageEnd();
-  bytes = oprot->getTransport()->writeEnd();
-  oprot->getTransport()->flush();
-
-  if (this->eventHandler_.get() != NULL) {
-    this->eventHandler_->postWrite(ctx, "ThriftServiceBenchmark.get_blob", bytes);
-  }
-}
-
-::boost::shared_ptr< ::apache::thrift::TProcessor > ThriftServiceBenchmarkProcessorFactory::getProcessor(const ::apache::thrift::TConnectionInfo& connInfo) {
-  ::apache::thrift::ReleaseHandler< ThriftServiceBenchmarkIfFactory > cleanup(handlerFactory_);
-  ::boost::shared_ptr< ThriftServiceBenchmarkIf > handler(handlerFactory_->getHandler(connInfo), cleanup);
-  ::boost::shared_ptr< ::apache::thrift::TProcessor > processor(new ThriftServiceBenchmarkProcessor(handler));
-  return processor;
-}
-
-int32_t ThriftServiceBenchmarkConcurrentClient::get_answer(const int32_t number)
-{
-  int32_t seqid = send_get_answer(number);
-  return recv_get_answer(seqid);
-}
-
-int32_t ThriftServiceBenchmarkConcurrentClient::send_get_answer(const int32_t number)
-{
-  int32_t cseqid = this->sync_.generateSeqId();
-  ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("get_answer", ::apache::thrift::protocol::T_CALL, cseqid);
-
-  ThriftServiceBenchmark_get_answer_pargs args;
-  args.number = &number;
-  args.write(oprot_);
-
-  oprot_->writeMessageEnd();
-  oprot_->getTransport()->writeEnd();
-  oprot_->getTransport()->flush();
-
-  sentry.commit();
-  return cseqid;
-}
-
-int32_t ThriftServiceBenchmarkConcurrentClient::recv_get_answer(const int32_t seqid)
-{
-
-  int32_t rseqid = 0;
-  std::string fname;
-  ::apache::thrift::protocol::TMessageType mtype;
-
-  // the read mutex gets dropped and reacquired as part of waitForWork()
-  // The destructor of this sentry wakes up other clients
-  ::apache::thrift::async::TConcurrentRecvSentry sentry(&this->sync_, seqid);
-
-  while(true) {
-    if(!this->sync_.getPending(fname, mtype, rseqid)) {
-      iprot_->readMessageBegin(fname, mtype, rseqid);
-    }
-    if(seqid == rseqid) {
-      if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
-        ::apache::thrift::TApplicationException x;
-        x.read(iprot_);
-        iprot_->readMessageEnd();
-        iprot_->getTransport()->readEnd();
-        sentry.commit();
-        throw x;
-      }
-      if (mtype != ::apache::thrift::protocol::T_REPLY) {
-        iprot_->skip(::apache::thrift::protocol::T_STRUCT);
-        iprot_->readMessageEnd();
-        iprot_->getTransport()->readEnd();
-      }
-      if (fname.compare("get_answer") != 0) {
-        iprot_->skip(::apache::thrift::protocol::T_STRUCT);
-        iprot_->readMessageEnd();
-        iprot_->getTransport()->readEnd();
-
-        // in a bad state, don't commit
-        using ::apache::thrift::protocol::TProtocolException;
-        throw TProtocolException(TProtocolException::INVALID_DATA);
-      }
-      int32_t _return;
-      ThriftServiceBenchmark_get_answer_presult result;
-      result.success = &_return;
-      result.read(iprot_);
-      iprot_->readMessageEnd();
-      iprot_->getTransport()->readEnd();
-
-      if (result.__isset.success) {
-        sentry.commit();
-        return _return;
-      }
-      // in a bad state, don't commit
-      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "get_answer failed: unknown result");
-    }
-    // seqid != rseqid
-    this->sync_.updatePending(fname, mtype, rseqid);
-
-    // this will temporarily unlock the readMutex, and let other clients get work done
-    this->sync_.waitForWork(seqid);
-  } // end while(true)
-}
-
-void ThriftServiceBenchmarkConcurrentClient::get_blob(std::string& _return)
-{
-  int32_t seqid = send_get_blob();
-  recv_get_blob(_return, seqid);
-}
-
-int32_t ThriftServiceBenchmarkConcurrentClient::send_get_blob()
-{
-  int32_t cseqid = this->sync_.generateSeqId();
-  ::apache::thrift::async::TConcurrentSendSentry sentry(&this->sync_);
-  oprot_->writeMessageBegin("get_blob", ::apache::thrift::protocol::T_CALL, cseqid);
-
-  ThriftServiceBenchmark_get_blob_pargs args;
-  args.write(oprot_);
-
-  oprot_->writeMessageEnd();
-  oprot_->getTransport()->writeEnd();
-  oprot_->getTransport()->flush();
-
-  sentry.commit();
-  return cseqid;
-}
-
-void ThriftServiceBenchmarkConcurrentClient::recv_get_blob(std::string& _return, const int32_t seqid)
-{
-
-  int32_t rseqid = 0;
-  std::string fname;
-  ::apache::thrift::protocol::TMessageType mtype;
-
-  // the read mutex gets dropped and reacquired as part of waitForWork()
-  // The destructor of this sentry wakes up other clients
-  ::apache::thrift::async::TConcurrentRecvSentry sentry(&this->sync_, seqid);
-
-  while(true) {
-    if(!this->sync_.getPending(fname, mtype, rseqid)) {
-      iprot_->readMessageBegin(fname, mtype, rseqid);
-    }
-    if(seqid == rseqid) {
-      if (mtype == ::apache::thrift::protocol::T_EXCEPTION) {
-        ::apache::thrift::TApplicationException x;
-        x.read(iprot_);
-        iprot_->readMessageEnd();
-        iprot_->getTransport()->readEnd();
-        sentry.commit();
-        throw x;
-      }
-      if (mtype != ::apache::thrift::protocol::T_REPLY) {
-        iprot_->skip(::apache::thrift::protocol::T_STRUCT);
-        iprot_->readMessageEnd();
-        iprot_->getTransport()->readEnd();
-      }
-      if (fname.compare("get_blob") != 0) {
-        iprot_->skip(::apache::thrift::protocol::T_STRUCT);
-        iprot_->readMessageEnd();
-        iprot_->getTransport()->readEnd();
-
-        // in a bad state, don't commit
-        using ::apache::thrift::protocol::TProtocolException;
-        throw TProtocolException(TProtocolException::INVALID_DATA);
-      }
-      ThriftServiceBenchmark_get_blob_presult result;
-      result.success = &_return;
-      result.read(iprot_);
-      iprot_->readMessageEnd();
-      iprot_->getTransport()->readEnd();
-
-      if (result.__isset.success) {
-        // _return pointer has now been filled
-        sentry.commit();
-        return;
-      }
-      // in a bad state, don't commit
-      throw ::apache::thrift::TApplicationException(::apache::thrift::TApplicationException::MISSING_RESULT, "get_blob failed: unknown result");
-    }
-    // seqid != rseqid
-    this->sync_.updatePending(fname, mtype, rseqid);
-
-    // this will temporarily unlock the readMutex, and let other clients get work done
-    this->sync_.waitForWork(seqid);
-  } // end while(true)
-}
-
-
-
diff --git a/src/thrift/ThriftServiceBenchmark_server.skeleton.cpp b/src/thrift/ThriftServiceBenchmark_server.skeleton.cpp
deleted file mode 100644
index 6f8e7ca..0000000
--- a/src/thrift/ThriftServiceBenchmark_server.skeleton.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// This autogenerated skeleton file illustrates how to build a server.
-// You should copy it to another filename to avoid overwriting it.
-
-#include "ThriftServiceBenchmark.h"
-#include <thrift/protocol/TBinaryProtocol.h>
-#include <thrift/server/TSimpleServer.h>
-#include <thrift/transport/TServerSocket.h>
-#include <thrift/transport/TBufferTransports.h>
-
-using namespace ::apache::thrift;
-using namespace ::apache::thrift::protocol;
-using namespace ::apache::thrift::transport;
-using namespace ::apache::thrift::server;
-
-using boost::shared_ptr;
-
-class ThriftServiceBenchmarkHandler : virtual public ThriftServiceBenchmarkIf {
- public:
-  ThriftServiceBenchmarkHandler() {
-    // Your initialization goes here
-  }
-
-  int32_t get_answer(const int32_t number) {
-    // Your implementation goes here
-    printf("get_answer\n");
-  }
-
-  void get_blob(std::string& _return) {
-    // Your implementation goes here
-    printf("get_blob\n");
-  }
-
-};
-
-int main(int argc, char **argv) {
-  int port = 9090;
-  shared_ptr<ThriftServiceBenchmarkHandler> handler(new ThriftServiceBenchmarkHandler());
-  shared_ptr<TProcessor> processor(new ThriftServiceBenchmarkProcessor(handler));
-  shared_ptr<TServerTransport> serverTransport(new TServerSocket(port));
-  shared_ptr<TTransportFactory> transportFactory(new TBufferedTransportFactory());
-  shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());
-
-  TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
-  server.serve();
-  return 0;
-}
-
diff --git a/src/thrift/thrift_service_constants.cpp b/src/thrift/thrift_service_constants.cpp
deleted file mode 100644
index ca5e265..0000000
--- a/src/thrift/thrift_service_constants.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Autogenerated by Thrift Compiler (0.9.3)
- *
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- *  @generated
- */
-#include "thrift_service_constants.h"
-
-
-
-const thrift_serviceConstants g_thrift_service_constants;
-
-thrift_serviceConstants::thrift_serviceConstants() {
-}
-
-
-
diff --git a/src/thrift/thrift_service_types.cpp b/src/thrift/thrift_service_types.cpp
deleted file mode 100644
index 6ce791c..0000000
--- a/src/thrift/thrift_service_types.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * Autogenerated by Thrift Compiler (0.9.3)
- *
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- *  @generated
- */
-#include "thrift_service_types.h"
-
-#include <algorithm>
-#include <ostream>
-
-#include <thrift/TToString.h>
-
-
-
-

From 35d13b092ac1beb29cac57cac81731b5fa9f551c Mon Sep 17 00:00:00 2001
From: sztomi <szelei.t@gmail.com>
Date: Sun, 5 Feb 2017 00:52:12 +0100
Subject: [PATCH 2/2] Updated grpc to 1.1.0 release version

---
 conanfile.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/conanfile.txt b/conanfile.txt
index 4b844eb..4edba7f 100644
--- a/conanfile.txt
+++ b/conanfile.txt
@@ -1,6 +1,6 @@
 [requires]
 google-benchmark/1.1.0@cpace6/stable
-grpc/1.1.0-pre1@sztomi/testing
+grpc/1.1.0@sztomi/testing
 
 [generators]
 cmake
