#include "ClientSnapRealm.h"
#include "UserGroups.h"
-ostream& operator<<(ostream &out, Inode &in)
+ostream& operator<<(ostream &out, const Inode &in)
{
out << in.vino() << "("
<< "faked_ino=" << in.faked_ino
<< " caps=" << ccap_string(in.caps_issued());
if (!in.caps.empty()) {
out << "(";
- for (map<mds_rank_t,Cap*>::iterator p = in.caps.begin(); p != in.caps.end(); ++p) {
+ for (auto p = in.caps.begin(); p != in.caps.end(); ++p) {
if (p != in.caps.begin())
out << ',';
out << p->first << '=' << ccap_string(p->second->issued);
return !caps.empty() || snap_caps;
}
-bool Inode::cap_is_valid(Cap* cap)
+bool Inode::cap_is_valid(Cap* cap) const
{
/*cout << "cap_gen " << cap->session-> cap_gen << std::endl
<< "session gen " << cap->gen << std::endl
return false;
}
-int Inode::caps_issued(int *implemented)
+int Inode::caps_issued(int *implemented) const
{
int c = snap_caps;
int i = 0;
- for (map<mds_rank_t,Cap*>::iterator it = caps.begin();
+ for (map<mds_rank_t,Cap*>::const_iterator it = caps.begin();
it != caps.end();
++it)
if (cap_is_valid(it->second)) {
}
~Inode() { }
- vinodeno_t vino() { return vinodeno_t(ino, snapid); }
+ vinodeno_t vino() const { return vinodeno_t(ino, snapid); }
struct Compare {
bool operator() (Inode* const & left, Inode* const & right) {
void get_cap_ref(int cap);
int put_cap_ref(int cap);
bool is_any_caps();
- bool cap_is_valid(Cap* cap);
- int caps_issued(int *implemented = 0);
+ bool cap_is_valid(Cap* cap) const;
+ int caps_issued(int *implemented = 0) const;
void touch_cap(Cap *cap);
void try_touch_cap(mds_rank_t mds);
bool caps_issued_mask(unsigned mask);
void dump(Formatter *f) const;
};
-ostream& operator<<(ostream &out, Inode &in);
+ostream& operator<<(ostream &out, const Inode &in);
#endif
-std::ostream &operator<<(std::ostream &out, ObjCeiling &in)
+std::ostream &operator<<(std::ostream &out, const ObjCeiling &in)
{
out << "id: " << in.id << " size: " << in.size;
return out;
return string(lpad, ' ') + s + string(rpad, ' ');
}
-std::ostream &operator<<(std::ostream& out, TextTable &t)
+std::ostream &operator<<(std::ostream &out, const TextTable &t)
{
for (unsigned int i = 0; i < t.col.size(); i++) {
TextTable::TextTableColumn col = t.col[i];
* Render table to ostream (i.e. cout << table)
*/
- friend std::ostream &operator<<(std::ostream& out, TextTable &t);
+ friend std::ostream &operator<<(std::ostream &out, const TextTable &t);
/**
* clear: Reset everything in a TextTable except column defs
}
// does not work, FIXME
-ostream& operator<<(ostream& out, JSONObj& obj) {
+ostream& operator<<(ostream &out, const JSONObj &obj) {
out << obj.name << ": " << obj.data_string;
return out;
}
JSONObjIter find_first(const string& name);
JSONObj *find_obj(const string& name);
- friend ostream& operator<<(ostream& out, JSONObj& obj); // does not work, FIXME
+ friend ostream& operator<<(ostream &out,
+ const JSONObj &obj); // does not work, FIXME
bool is_array();
bool is_object();
virtual EMetaBlob *get_metablob() { return NULL; }
};
-inline ostream& operator<<(ostream& out, LogEvent& le) {
+inline ostream& operator<<(ostream& out, const LogEvent &le) {
le.print(out);
return out;
}
WRITE_CLASS_ENCODER_FEATURES(MDSMap::mds_info_t)
WRITE_CLASS_ENCODER_FEATURES(MDSMap)
-inline ostream& operator<<(ostream& out, MDSMap& m) {
+inline ostream& operator<<(ostream &out, const MDSMap &m) {
m.print_summary(NULL, &out);
return out;
}
void apply();
void cleanup();
- virtual void print(ostream &out) {
+ virtual void print(ostream &out) const {
out << "mutation(" << this << ")";
}
virtual void dump(Formatter *f) const {}
};
-inline ostream& operator<<(ostream& out, MutationImpl &mut)
+inline ostream& operator<<(ostream &out, const MutationImpl &mut)
{
mut.print(out);
return out;
WRITE_CLASS_ENCODER(ceph_lock_state_t)
-inline ostream& operator<<(ostream& out, ceph_lock_state_t& l) {
+inline ostream& operator<<(ostream &out, const ceph_lock_state_t &l) {
out << "ceph_lock_state_t. held_locks.size()=" << l.held_locks.size()
<< ", waiting_locks.size()=" << l.waiting_locks.size()
<< ", client_held_lock_counts -- " << l.client_held_lock_counts
<< "\n client_waiting_lock_counts -- " << l.client_waiting_lock_counts
<< "\n held_locks -- ";
- for (multimap<uint64_t, ceph_filelock>::iterator iter = l.held_locks.begin();
+ for (auto iter = l.held_locks.begin();
iter != l.held_locks.end();
++iter)
out << iter->second;
out << "\n waiting_locks -- ";
- for (multimap<uint64_t, ceph_filelock>::iterator iter =l.waiting_locks.begin();
+ for (auto iter =l.waiting_locks.begin();
iter != l.waiting_locks.end();
++iter)
out << iter->second << "\n";
<< ").auth v" << v << " ";
}
-ostream& operator<<(ostream& out, AuthMonitor& pm)
+ostream& operator<<(ostream &out, const AuthMonitor &pm)
{
return out << "auth";
}
<< ").log v" << v << " ";
}
-ostream& operator<<(ostream& out, LogMonitor& pm)
+ostream& operator<<(ostream &out, const LogMonitor &pm)
{
return out << "log";
}
};
WRITE_CLASS_ENCODER_FEATURES(MonMap)
-inline ostream& operator<<(ostream& out, MonMap& m) {
+inline ostream& operator<<(ostream &out, const MonMap &m) {
m.print_summary(out);
return out;
}
ceph_msg_header &header,
ceph_msg_footer& footer, bufferlist& front,
bufferlist& middle, bufferlist& data);
-inline ostream& operator<<(ostream& out, Message& m) {
+inline ostream& operator<<(ostream &out, const Message &m) {
m.print(out);
if (m.get_header().version)
out << " v" << m.get_header().version;
/***************** HEADER *******************/
-ostream& operator<<(ostream& out, Journaler::Header &h)
+ostream& operator<<(ostream &out, const Journaler::Header &h)
{
return out << "loghead(trim " << h.trimmed_pos
<< ", expire " << h.expire_pos
journal_tid = _journal_tid;
}
- bool is_missing() { return state == STATE_MISSING; }
- bool is_dirty() { return state == STATE_DIRTY; }
- bool is_clean() { return state == STATE_CLEAN; }
- bool is_zero() { return state == STATE_ZERO; }
- bool is_tx() { return state == STATE_TX; }
- bool is_rx() { return state == STATE_RX; }
- bool is_error() { return state == STATE_ERROR; }
+ bool is_missing() const { return state == STATE_MISSING; }
+ bool is_dirty() const { return state == STATE_DIRTY; }
+ bool is_clean() const { return state == STATE_CLEAN; }
+ bool is_zero() const { return state == STATE_ZERO; }
+ bool is_tx() const { return state == STATE_TX; }
+ bool is_rx() const { return state == STATE_RX; }
+ bool is_error() const { return state == STATE_ERROR; }
// reference counting
int get() {
set_item.remove_myself();
}
- sobject_t get_soid() { return oid; }
+ sobject_t get_soid() const { return oid; }
object_t get_oid() { return oid.oid; }
snapid_t get_snap() { return oid.snap; }
- ObjectSet *get_object_set() { return oset; }
+ ObjectSet *get_object_set() const { return oset; }
string get_namespace() { return oloc.nspace; }
uint64_t get_object_number() const { return object_no; }
- object_locator_t& get_oloc() { return oloc; }
+ const object_locator_t& get_oloc() const { return oloc; }
void set_object_locator(object_locator_t& l) { oloc = l; }
bool can_close() {
};
-inline ostream& operator<<(ostream& out, ObjectCacher::BufferHead &bh)
+inline ostream& operator<<(ostream &out, const ObjectCacher::BufferHead &bh)
{
out << "bh[ " << &bh << " "
<< bh.start() << "~" << bh.length()
return out;
}
-inline ostream& operator<<(ostream& out, ObjectCacher::ObjectSet &os)
+inline ostream& operator<<(ostream &out, const ObjectCacher::ObjectSet &os)
{
return out << "objectset[" << os.ino
<< " ts " << os.truncate_seq << "/" << os.truncate_size
<< "]";
}
-inline ostream& operator<<(ostream& out, ObjectCacher::Object &ob)
+inline ostream& operator<<(ostream &out, const ObjectCacher::Object &ob)
{
out << "object["
<< ob.get_soid() << " oset " << ob.oset << dec
}
-ostream& operator<<(ostream& out, IO::ptr io) {
+ostream& operator<<(ostream &out, const IO::ptr &io) {
io->write_debug(out);
return out;
}
/// Used for dumping debug info.
/// @related IO
-std::ostream& operator<<(std::ostream& out, IO::ptr io);
+std::ostream& operator<<(std::ostream &out, const IO::ptr &io);
class StartThreadIO : public IO {
return obj;
}
-ostream& operator<<(ostream& out, XMLObj& obj) {
+ostream& operator<<(ostream &out, const XMLObj &obj) {
out << obj.obj_type << ": " << obj.data;
return out;
}
XMLObjIter find(string name);
XMLObj *find_first(string name);
- friend ostream& operator<<(ostream& out, XMLObj& obj);
+ friend ostream& operator<<(ostream &out, const XMLObj &obj);
};
struct XML_ParserStruct;
using namespace std;
-ostream& operator<<(ostream& out, vector<int>& v)
+ostream& operator<<(ostream &out, const vector<int> &v)
{
out << "[";
for (int i=0; i<v.size(); i++) {
}
}
-std::ostream & operator<<(std::ostream &out, TestOpStat &rhs)
+std::ostream & operator<<(std::ostream &out, const TestOpStat &rhs)
{
rhs.stat_lock.Lock();
- for (map<string,TestOpStat::TypeStatus>::iterator i = rhs.stats.begin();
+ for (auto i = rhs.stats.begin();
i != rhs.stats.end();
++i) {
map<double,uint64_t> latency;
class TestOpStat {
public:
- Mutex stat_lock;
+ mutable Mutex stat_lock;
TestOpStat() : stat_lock("TestOpStat lock") {}
void begin(TestOp *in);
void end(TestOp *in);
- friend std::ostream & operator<<(std::ostream &, TestOpStat&);
+ friend std::ostream & operator<<(std::ostream &, const TestOpStat &);
};
-std::ostream & operator<<(std::ostream &out, TestOpStat &rhs);
+std::ostream & operator<<(std::ostream &out, const TestOpStat &rhs);
#endif