~ubuntu-branches/ubuntu/raring/ceph/raring

« back to all changes in this revision

Viewing changes to src/messages/MMonProbe.h

  • Committer: Package Import Robot
  • Author(s): Laszlo Boszormenyi (GCS)
  • Date: 2012-02-05 10:07:38 UTC
  • mfrom: (1.1.7) (0.1.11 sid)
  • Revision ID: package-import@ubuntu.com-20120205100738-00s0bxx93mamy8tk
Tags: 0.41-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- 
 
2
// vim: ts=8 sw=2 smarttab
 
3
/*
 
4
 * Ceph - scalable distributed file system
 
5
 *
 
6
 * Copyright (C) 2004-2006 Sage Weil <sage@newdream.net>
 
7
 *
 
8
 * This is free software; you can redistribute it and/or
 
9
 * modify it under the terms of the GNU Lesser General Public
 
10
 * License version 2.1, as published by the Free Software 
 
11
 * Foundation.  See file COPYING.
 
12
 * 
 
13
 */
 
14
 
 
15
 
 
16
#ifndef CEPH_MMONPROBE_H
 
17
#define CEPH_MMONPROBE_H
 
18
 
 
19
#include "msg/Message.h"
 
20
#include "mon/MonMap.h"
 
21
 
 
22
class MMonProbe : public Message {
 
23
public:
 
24
  enum {
 
25
    OP_PROBE = 1,
 
26
    OP_REPLY = 2,
 
27
    OP_SLURP = 3,
 
28
    OP_SLURP_LATEST = 4,
 
29
    OP_DATA = 5,
 
30
  };
 
31
 
 
32
  static const char *get_opname(int o) {
 
33
    switch (o) {
 
34
    case OP_PROBE: return "probe";
 
35
    case OP_REPLY: return "reply";
 
36
    case OP_SLURP: return "slurp";
 
37
    case OP_SLURP_LATEST: return "slurp_latest";
 
38
    case OP_DATA: return "data";
 
39
    default: assert(0); return 0;
 
40
    }
 
41
  }
 
42
  
 
43
  uuid_d fsid;
 
44
  int32_t op;
 
45
  string name;
 
46
  set<int32_t> quorum;
 
47
  bufferlist monmap_bl;
 
48
  map<string, version_t> paxos_versions;
 
49
 
 
50
  string machine_name;
 
51
  map<string, map<version_t,bufferlist> > paxos_values;
 
52
  bufferlist latest_value;
 
53
  version_t latest_version, newest_version, oldest_version;
 
54
 
 
55
  MMonProbe() : Message(MSG_MON_PROBE) {}
 
56
  MMonProbe(const uuid_d& f, int o, const string& n)
 
57
    : Message(MSG_MON_PROBE), fsid(f), op(o), name(n),
 
58
      latest_version(0), newest_version(0), oldest_version(0) {}
 
59
private:
 
60
  ~MMonProbe() {}
 
61
 
 
62
public:  
 
63
  const char *get_type_name() { return "mon_probe"; }
 
64
  void print(ostream& out) {
 
65
    out << "mon_probe(" << get_opname(op) << " " << fsid << " name " << name;
 
66
    if (quorum.size())
 
67
      out << " quorum " << quorum;
 
68
    if (paxos_versions.size())
 
69
      out << " versions " << paxos_versions;
 
70
    if (machine_name.length())
 
71
      out << " machine_name " << machine_name << " " << oldest_version << "-" << newest_version;
 
72
    out << ")";
 
73
  }
 
74
  
 
75
  void encode_payload(CephContext *cct) {
 
76
    ::encode(fsid, payload);
 
77
    ::encode(op, payload);
 
78
    ::encode(name, payload);
 
79
    ::encode(quorum, payload);
 
80
    ::encode(monmap_bl, payload);
 
81
    ::encode(paxos_versions, payload);
 
82
    ::encode(machine_name, payload);
 
83
    ::encode(oldest_version, payload);
 
84
    ::encode(newest_version, payload);
 
85
    ::encode(paxos_values, payload);
 
86
    ::encode(latest_value, payload);
 
87
    ::encode(latest_version, payload);
 
88
  }
 
89
  void decode_payload(CephContext *cct) {
 
90
    bufferlist::iterator p = payload.begin();
 
91
    ::decode(fsid, p);
 
92
    ::decode(op, p);
 
93
    ::decode(name, p);
 
94
    ::decode(quorum, p);
 
95
    ::decode(monmap_bl, p);
 
96
    ::decode(paxos_versions, p);
 
97
    ::decode(machine_name, p);
 
98
    ::decode(oldest_version, p);
 
99
    ::decode(newest_version, p);
 
100
    ::decode(paxos_values, p);
 
101
    ::decode(latest_value, p);
 
102
    ::decode(latest_version, p);
 
103
  }
 
104
};
 
105
 
 
106
#endif