This is a portion of the namespace project.
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
#ifndef CEPH_COMPATSET_H
#define CEPH_COMPATSET_H
+
+#include <iostream>
+#include <map>
+#include <string>
+
#include "include/buffer.h"
+#include "include/encoding.h"
+#include "include/types.h"
#include "common/Formatter.h"
struct CompatSet {
struct Feature {
uint64_t id;
- string name;
+ std::string name;
- Feature(uint64_t _id, const string& _name) : id(_id), name(_name) {}
+ Feature(uint64_t _id, const std::string& _name) : id(_id), name(_name) {}
};
class FeatureSet {
uint64_t mask;
- map <uint64_t,string> names;
+ std::map<uint64_t, std::string> names;
public:
friend struct CompatSet;
friend class CephCompatSet_AllSet_Test;
friend class CephCompatSet_other_Test;
friend class CephCompatSet_merge_Test;
- friend ostream& operator<<(ostream& out, const CompatSet::FeatureSet& fs);
- friend ostream& operator<<(ostream& out, const CompatSet& compat);
+ friend std::ostream& operator<<(std::ostream& out, const CompatSet::FeatureSet& fs);
+ friend std::ostream& operator<<(std::ostream& out, const CompatSet& compat);
FeatureSet() : mask(1), names() {}
void insert(const Feature& f) {
assert(f.id > 0);
}
void encode(bufferlist& bl) const {
+ using ceph::encode;
/* See below, mask always has the lowest bit set in memory, but
* unset in the encoding */
- ::encode(mask & (~(uint64_t)1), bl);
- ::encode(names, bl);
+ encode(mask & (~(uint64_t)1), bl);
+ encode(names, bl);
}
void decode(bufferlist::iterator& bl) {
- ::decode(mask, bl);
- ::decode(names, bl);
+ using ceph::decode;
+ decode(mask, bl);
+ decode(names, bl);
/**
* Previously, there was a bug where insert did
* mask |= f.id rather than mask |= (1 << f.id).
*/
if (mask & 1) {
mask = 1;
- map<uint64_t, string> temp_names;
+ std::map<uint64_t, std::string> temp_names;
temp_names.swap(names);
- for (map<uint64_t, string>::iterator i = temp_names.begin();
- i != temp_names.end();
- ++i) {
+ for (auto i = temp_names.begin(); i != temp_names.end(); ++i) {
insert(Feature(i->first, i->second));
}
} else {
}
void dump(Formatter *f) const {
- for (map<uint64_t,string>::const_iterator p = names.begin();
- p != names.end();
- ++p) {
+ for (auto p = names.cbegin(); p != names.cend(); ++p) {
char s[18];
snprintf(s, sizeof(s), "feature_%llu", (unsigned long long)p->first);
f->dump_string(s, p->second);
f->close_section();
}
- static void generate_test_instances(list<CompatSet*>& o) {
+ static void generate_test_instances(std::list<CompatSet*>& o) {
o.push_back(new CompatSet);
o.push_back(new CompatSet);
o.back()->compat.insert(Feature(1, "one"));
};
WRITE_CLASS_ENCODER(CompatSet)
-inline ostream& operator<<(ostream& out, const CompatSet::FeatureSet& fs)
+using ceph::operator <<;
+inline std::ostream& operator<<(std::ostream& out, const CompatSet::FeatureSet& fs)
{
return out << fs.names;
}
-inline ostream& operator<<(ostream& out, const CompatSet& compat)
+inline std::ostream& operator<<(std::ostream& out, const CompatSet& compat)
{
return out << "compat=" << compat.compat
<< ",rocompat=" << compat.ro_compat
#include <map>
+#include "include/encoding.h"
+
template <class Key, class T, class Map>
class compact_map_base {
protected:
return const_iterator(this, map->upper_bound(k));
}
void encode(bufferlist &bl) const {
+ using ceph::encode;
if (map)
- ::encode(*map, bl);
+ encode(*map, bl);
else
- ::encode((uint32_t)0, bl);
+ encode((uint32_t)0, bl);
}
void encode(bufferlist &bl, uint64_t features) const {
+ using ceph::encode;
if (map)
- ::encode(*map, bl, features);
+ encode(*map, bl, features);
else
- ::encode((uint32_t)0, bl);
+ encode((uint32_t)0, bl);
}
void decode(bufferlist::iterator& p) {
+ using ceph::decode;
+ using ceph::decode_nohead;
uint32_t n;
- ::decode(n, p);
+ decode(n, p);
if (n > 0) {
alloc_internal();
- ::decode_nohead(n, *map, p);
+ decode_nohead(n, *map, p);
} else
free_internal();
}
return const_iterator(this, set->upper_bound(t));
}
void encode(bufferlist &bl) const {
+ using ceph::encode;
if (set)
- ::encode(*set, bl);
+ encode(*set, bl);
else
- ::encode((uint32_t)0, bl);
+ encode((uint32_t)0, bl);
}
void decode(bufferlist::iterator& p) {
+ using ceph::decode;
uint32_t n;
- ::decode(n, p);
+ decode(n, p);
if (n > 0) {
alloc_internal();
- ::decode_nohead(n, *set, p);
+ decode_nohead(n, *set, p);
} else
free_internal();
}
// encoding
void encode(bufferlist& bl) const {
+ using ceph::encode;
__u8 struct_v = 1;
- ::encode(struct_v, bl);
- ::encode(ino, bl);
- ::encode(path, bl);
+ encode(struct_v, bl);
+ encode(ino, bl);
+ encode(path, bl);
}
void decode(bufferlist::iterator& blp) {
+ using ceph::decode;
bits.clear();
__u8 struct_v;
- ::decode(struct_v, blp);
- ::decode(ino, blp);
- ::decode(path, blp);
+ decode(struct_v, blp);
+ decode(ino, blp);
+ decode(path, blp);
encoded = true;
}
void dump(Formatter *f) const {
#include "compact_map.h"
#include "ceph_frag.h"
+#include "include/encoding.h"
#include "include/assert.h"
+#include "common/dout.h"
+
/*
*
* the goal here is to use a binary split strategy to partition a namespace.
// encoding
void encode(bufferlist& bl) const {
- ::encode(_splits, bl);
+ using ceph::encode;
+ encode(_splits, bl);
}
void decode(bufferlist::iterator& p) {
- ::decode(_splits, p);
+ using ceph::decode;
+ decode(_splits, p);
}
void encode_nohead(bufferlist& bl) const {
+ using ceph::encode;
for (compact_map<frag_t,int32_t>::const_iterator p = _splits.begin();
p != _splits.end();
++p) {
- ::encode(p->first, bl);
- ::encode(p->second, bl);
+ encode(p->first, bl);
+ encode(p->second, bl);
}
}
void decode_nohead(int n, bufferlist::iterator& p) {
+ using ceph::decode;
_splits.clear();
while (n-- > 0) {
frag_t f;
- ::decode(f, p);
- ::decode(_splits[f], p);
+ decode(f, p);
+ decode(_splits[f], p);
}
}
operator _inodeno_t() const { return val; }
void encode(bufferlist& bl) const {
- ::encode(val, bl);
+ using ceph::encode;
+ encode(val, bl);
}
void decode(bufferlist::iterator& p) {
- ::decode(val, p);
+ using ceph::decode;
+ decode(val, p);
}
} __attribute__ ((__may_alias__));
WRITE_CLASS_ENCODER(inodeno_t)
// file modes
-static inline bool file_mode_is_readonly(int mode) {
+inline bool file_mode_is_readonly(int mode) {
return (mode & CEPH_FILE_MODE_WR) == 0;
}
HEALTH_OK = 2,
};
-static inline void encode(health_status_t hs, bufferlist& bl) {
+inline void encode(health_status_t hs, bufferlist& bl) {
+ using ceph::encode;
uint8_t v = hs;
- ::encode(v, bl);
+ encode(v, bl);
}
-static inline void decode(health_status_t& hs, bufferlist::iterator& p) {
+inline void decode(health_status_t& hs, bufferlist::iterator& p) {
+ using ceph::decode;
uint8_t v;
- ::decode(v, p);
+ decode(v, p);
hs = health_status_t(v);
}
template<>
#include <iosfwd>
#include <iomanip>
-using namespace std;
+#include "include/rados.h"
#include "include/unordered_map.h"
#include "hash.h"
#include "ceph_hash.h"
#include "cmp.h"
+using namespace std;
+
struct object_t {
string name;
}
void encode(bufferlist &bl) const {
- ::encode(name, bl);
+ using ceph::encode;
+ encode(name, bl);
}
void decode(bufferlist::iterator &bl) {
- ::decode(name, bl);
+ using ceph::decode;
+ decode(name, bl);
}
};
WRITE_CLASS_ENCODER(object_t)
}
void encode(bufferlist& bl) const {
- ::encode(oid, bl);
- ::encode(snap, bl);
+ using ceph::encode;
+ encode(oid, bl);
+ encode(snap, bl);
}
void decode(bufferlist::iterator& bl) {
- ::decode(oid, bl);
- ::decode(snap, bl);
+ using ceph::decode;
+ decode(oid, bl);
+ decode(snap, bl);
}
};
WRITE_CLASS_ENCODER(sobject_t)
client_t(int64_t _v = -2) : v(_v) {}
void encode(bufferlist& bl) const {
- ::encode(v, bl);
+ using ceph::encode;
+ encode(v, bl);
}
void decode(bufferlist::iterator& bl) {
- ::decode(v, bl);
+ using ceph::decode;
+ decode(v, bl);
}
};
WRITE_CLASS_ENCODER(client_t)
const static shard_id_t NO_SHARD;
void encode(bufferlist &bl) const {
- ::encode(id, bl);
+ using ceph::encode;
+ encode(id, bl);
}
void decode(bufferlist::iterator &bl) {
- ::decode(id, bl);
+ using ceph::decode;
+ decode(id, bl);
}
};
WRITE_CLASS_ENCODER(shard_id_t)
int operator<=(int i) { return code <= i; }
void encode(bufferlist &bl) const {
+ using ceph::encode;
__s32 newcode = hostos_to_ceph_errno(code);
- ::encode(newcode, bl);
+ encode(newcode, bl);
}
void decode(bufferlist::iterator &bl) {
- ::decode(code, bl);
+ using ceph::decode;
+ decode(code, bl);
code = ceph_to_hostos_errno(code);
}
};
void encode(bufferlist &bl) const {
ENCODE_START(1, 1, bl);
- ::encode(byte_total, bl);
- ::encode(byte_used, bl);
- ::encode(byte_avail, bl);
- ::encode(avail_percent, bl);
+ encode(byte_total, bl);
+ encode(byte_used, bl);
+ encode(byte_avail, bl);
+ encode(avail_percent, bl);
ENCODE_FINISH(bl);
}
void decode(bufferlist::iterator &p) {
DECODE_START(1, p);
- ::decode(byte_total, p);
- ::decode(byte_used, p);
- ::decode(byte_avail, p);
- ::decode(avail_percent, p);
+ decode(byte_total, p);
+ decode(byte_used, p);
+ decode(byte_avail, p);
+ decode(avail_percent, p);
DECODE_FINISH(p);
}
#if defined(CEPH_LITTLE_ENDIAN)
bl.append((char *)(this), sizeof(__u32) + sizeof(__u32));
#else
- ::encode(tv.tv_sec, bl);
- ::encode(tv.tv_nsec, bl);
+ using ceph::encode;
+ encode(tv.tv_sec, bl);
+ encode(tv.tv_nsec, bl);
#endif
}
void decode(bufferlist::iterator &p) {
#if defined(CEPH_LITTLE_ENDIAN)
p.copy(sizeof(__u32) + sizeof(__u32), (char *)(this));
#else
- ::decode(tv.tv_sec, p);
- ::decode(tv.tv_nsec, p);
+ using ceph::decode;
+ decode(tv.tv_sec, p);
+ decode(tv.tv_nsec, p);
#endif
}