diff --git a/src/test/librados_test_stub/LibradosTestStub.cc b/src/test/librados_test_stub/LibradosTestStub.cc index d56001e2cebcd..734ebaa4325fd 100644 --- a/src/test/librados_test_stub/LibradosTestStub.cc +++ b/src/test/librados_test_stub/LibradosTestStub.cc @@ -1216,3 +1216,12 @@ int cls_register_cxx_method(cls_handle_t hclass, const char *method, librados::TestClassHandler *cls = get_class_handler(); return cls->create_method(hclass, method, class_call, handle); } + +int cls_register_cxx_filter(cls_handle_t hclass, + const std::string &filter_name, + cls_cxx_filter_factory_t fn, + cls_filter_handle_t *) +{ + librados::TestClassHandler *cls = get_class_handler(); + return cls->create_filter(hclass, filter_name, fn); +} diff --git a/src/test/librados_test_stub/TestClassHandler.cc b/src/test/librados_test_stub/TestClassHandler.cc index bf6634dbf022c..3d3e5780a8bd9 100644 --- a/src/test/librados_test_stub/TestClassHandler.cc +++ b/src/test/librados_test_stub/TestClassHandler.cc @@ -120,6 +120,18 @@ TestClassHandler::SharedMethodContext TestClassHandler::get_method_context( return ctx; } +int TestClassHandler::create_filter(cls_handle_t hclass, + const std::string& name, + cls_cxx_filter_factory_t fn) +{ + Class *cls = reinterpret_cast(hclass); + if (cls->filters.find(name) != cls->filters.end()) { + return -EEXIST; + } + cls->filters[name] = fn; + return 0; +} + TestClassHandler::MethodContext::~MethodContext() { io_ctx_impl->put(); } diff --git a/src/test/librados_test_stub/TestClassHandler.h b/src/test/librados_test_stub/TestClassHandler.h index e25db273ae23c..df273364d3066 100644 --- a/src/test/librados_test_stub/TestClassHandler.h +++ b/src/test/librados_test_stub/TestClassHandler.h @@ -36,9 +36,11 @@ class TestClassHandler { }; typedef boost::shared_ptr SharedMethod; typedef std::map Methods; + typedef std::map Filters; struct Class { Methods methods; + Filters filters; }; typedef boost::shared_ptr SharedClass; @@ -54,6 +56,9 @@ class TestClassHandler { const std::string &oid, const SnapContext &snapc); + int create_filter(cls_handle_t hclass, const std::string& filter_name, + cls_cxx_filter_factory_t fn); + private: typedef std::map Classes; @@ -61,6 +66,7 @@ class TestClassHandler { Classes m_classes; ClassHandles m_class_handles; + Filters m_filters; void open_class(const std::string& name, const std::string& path);