X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Fobjclass%2Fobjclass.h;fp=src%2Fceph%2Fsrc%2Fobjclass%2Fobjclass.h;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=cd41153dafcf5447d9e93700196be57a2cd5f877;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/objclass/objclass.h b/src/ceph/src/objclass/objclass.h deleted file mode 100644 index cd41153..0000000 --- a/src/ceph/src/objclass/objclass.h +++ /dev/null @@ -1,178 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab - -#ifndef CEPH_OBJCLASS_H -#define CEPH_OBJCLASS_H - -#ifdef __cplusplus - -#include "../include/types.h" -#include "msg/msg_types.h" -#include "common/hobject.h" -#include "common/ceph_time.h" -#include "include/rados/objclass.h" - -struct obj_list_watch_response_t; - -#if __GNUC__ >= 4 - #define CEPH_CLS_API __attribute__ ((visibility ("default"))) -#else - #define CEPH_CLS_API -#endif - -extern "C" { -#endif - -#define CLS_METHOD_PUBLIC 0x4 /// unused - -typedef void *cls_filter_handle_t; -typedef int (*cls_method_call_t)(cls_method_context_t ctx, - char *indata, int datalen, - char **outdata, int *outdatalen); -typedef struct { - const char *name; - const char *ver; -} cls_deps_t; - -/* class utils */ -extern void *cls_alloc(size_t size); -extern void cls_free(void *p); - -extern int cls_read(cls_method_context_t hctx, int ofs, int len, - char **outdata, int *outdatalen); -extern int cls_call(cls_method_context_t hctx, const char *cls, const char *method, - char *indata, int datalen, - char **outdata, int *outdatalen); -extern int cls_getxattr(cls_method_context_t hctx, const char *name, - char **outdata, int *outdatalen); -extern int cls_setxattr(cls_method_context_t hctx, const char *name, - const char *value, int val_len); -/** This will fill in the passed origin pointer with the origin of the - * request which activated your class call. */ -extern int cls_get_request_origin(cls_method_context_t hctx, - entity_inst_t *origin); - -/* class registration api */ -extern int cls_unregister(cls_handle_t); - -extern int cls_register_method(cls_handle_t hclass, const char *method, int flags, - cls_method_call_t class_call, cls_method_handle_t *handle); -extern int cls_unregister_method(cls_method_handle_t handle); -extern void cls_unregister_filter(cls_filter_handle_t handle); - - - -/* triggers */ -#define OBJ_READ 0x1 -#define OBJ_WRITE 0x2 - -typedef int cls_trigger_t; - -extern int cls_link(cls_method_handle_t handle, int priority, cls_trigger_t trigger); -extern int cls_unlink(cls_method_handle_t handle); - - -/* should be defined by the class implementation - defined here inorder to get it compiled without C++ mangling */ -extern void class_init(void); -extern void class_fini(void); - -#ifdef __cplusplus -} - -class PGLSFilter { - CephContext* cct; -protected: - string xattr; -public: - PGLSFilter(); - virtual ~PGLSFilter(); - virtual bool filter(const hobject_t &obj, bufferlist& xattr_data, - bufferlist& outdata) = 0; - - /** - * Arguments passed from the RADOS client. Implementations must - * handle any encoding errors, and return an appropriate error code, - * or 0 on valid input. - */ - virtual int init(bufferlist::iterator ¶ms) = 0; - - /** - * xattr key, or empty string. If non-empty, this xattr will be fetched - * and the value passed into ::filter - */ - virtual string& get_xattr() { return xattr; } - - /** - * If true, objects without the named xattr (if xattr name is not empty) - * will be rejected without calling ::filter - */ - virtual bool reject_empty_xattr() { return true; } -}; - -// Classes expose a filter constructor that returns a subclass of PGLSFilter -typedef PGLSFilter* (*cls_cxx_filter_factory_t)(); - - -extern int cls_register_cxx_filter(cls_handle_t hclass, - const std::string &filter_name, - cls_cxx_filter_factory_t fn, - cls_filter_handle_t *handle=NULL); - -extern int cls_cxx_stat2(cls_method_context_t hctx, uint64_t *size, ceph::real_time *mtime); -extern int cls_cxx_read2(cls_method_context_t hctx, int ofs, int len, - bufferlist *bl, uint32_t op_flags); -extern int cls_cxx_write2(cls_method_context_t hctx, int ofs, int len, - bufferlist *bl, uint32_t op_flags); -extern int cls_cxx_write_full(cls_method_context_t hctx, bufferlist *bl); -extern int cls_cxx_getxattrs(cls_method_context_t hctx, map *attrset); -extern int cls_cxx_replace(cls_method_context_t hctx, int ofs, int len, bufferlist *bl); -extern int cls_cxx_snap_revert(cls_method_context_t hctx, snapid_t snapid); -extern int cls_cxx_map_clear(cls_method_context_t hctx); -extern int cls_cxx_map_get_all_vals(cls_method_context_t hctx, - std::map *vals, - bool *more); -extern int cls_cxx_map_get_keys(cls_method_context_t hctx, - const string &start_after, - uint64_t max_to_get, - std::set *keys, - bool *more); -extern int cls_cxx_map_get_vals(cls_method_context_t hctx, - const string &start_after, - const string &filter_prefix, - uint64_t max_to_get, - std::map *vals, - bool *more); -extern int cls_cxx_map_read_header(cls_method_context_t hctx, bufferlist *outbl); -extern int cls_cxx_map_set_vals(cls_method_context_t hctx, - const std::map *map); -extern int cls_cxx_map_write_header(cls_method_context_t hctx, bufferlist *inbl); -extern int cls_cxx_map_remove_key(cls_method_context_t hctx, const string &key); -extern int cls_cxx_map_update(cls_method_context_t hctx, bufferlist *inbl); - -extern int cls_cxx_list_watchers(cls_method_context_t hctx, - obj_list_watch_response_t *watchers); - -/* utility functions */ -extern int cls_gen_random_bytes(char *buf, int size); -extern int cls_gen_rand_base64(char *dest, int size); /* size should be the required string size + 1 */ - -/* environment */ -extern uint64_t cls_current_version(cls_method_context_t hctx); -extern int cls_current_subop_num(cls_method_context_t hctx); -extern uint64_t cls_get_features(cls_method_context_t hctx); -extern uint64_t cls_get_client_features(cls_method_context_t hctx); - -/* helpers */ -extern void cls_cxx_subop_version(cls_method_context_t hctx, string *s); - -/* These are also defined in rados.h and librados.h. Keep them in sync! */ -#define CEPH_OSD_TMAP_HDR 'h' -#define CEPH_OSD_TMAP_SET 's' -#define CEPH_OSD_TMAP_CREATE 'c' -#define CEPH_OSD_TMAP_RM 'r' - - -#endif - -#endif