~ubuntu-branches/ubuntu/precise/ceph/precise

« back to all changes in this revision

Viewing changes to src/messages/MClientReconnect.h

  • Committer: Bazaar Package Importer
  • Author(s): Clint Byrum, Clint Byrum, Micah Gersten
  • Date: 2011-02-12 22:50:26 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20110212225026-yyyw4tk0msgql3ul
Tags: 0.24.2-0ubuntu1
[ Clint Byrum <clint@ubuntu.com> ]
* New upstream release. (LP: #658670, LP: #684011)
* debian/patches/fix-mkcephfs.patch: dropped (applied upstream)
* Removed .la files from libceph1-dev, libcrush1-dev and 
  librados1-dev (per Debian policy v3.9.1 10.2).
* debian/control: adding pkg-config as a build dependency
* debian/control: depend on libcrypto++-dev instead of libssl-dev
* debian/watch: added watch file

[ Micah Gersten <micahg@ubuntu.com> ]
* debian/control: add Homepage

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
#include "msg/Message.h"
19
19
#include "mds/mdstypes.h"
20
20
 
 
21
 
21
22
class MClientReconnect : public Message {
22
23
public:
23
24
  map<inodeno_t, cap_reconnect_t>  caps;   // only head inodes
36
37
 
37
38
  void add_cap(inodeno_t ino, uint64_t cap_id, inodeno_t pathbase, const string& path,
38
39
               int wanted, int issued,
39
 
               loff_t sz, utime_t mt, utime_t at,
40
40
               inodeno_t sr) {
41
 
    caps[ino] = cap_reconnect_t(cap_id, pathbase, path, wanted, issued, sz, mt, at, sr);
 
41
    caps[ino] = cap_reconnect_t(cap_id, pathbase, path, wanted, issued, sr);
42
42
  }
43
43
  void add_snaprealm(inodeno_t ino, snapid_t seq, inodeno_t parent) {
44
44
    ceph_mds_snaprealm_reconnect r;
49
49
  }
50
50
 
51
51
  void encode_payload() {
52
 
    ::encode(caps, data);
 
52
    if (connection->has_feature(CEPH_FEATURE_FLOCK)) {
 
53
      // new protocol
 
54
      header.version = 2;
 
55
      ::encode(caps, data);
 
56
    } else {
 
57
      // compat crap
 
58
      map<inodeno_t, old_cap_reconnect_t> ocaps;
 
59
      for (map<inodeno_t,cap_reconnect_t>::iterator p = caps.begin(); p != caps.end(); p++)
 
60
        ocaps[p->first] = p->second;
 
61
      ::encode(ocaps, data);
 
62
    }
53
63
    ::encode_nohead(realms, data);
54
64
  }
55
65
  void decode_payload() {
56
66
    bufferlist::iterator p = data.begin();
57
 
    ::decode(caps, p);
 
67
    if (header.version >= 2) {
 
68
      // new protocol
 
69
      ::decode(caps, p);
 
70
    } else {
 
71
      // compat crap
 
72
      map<inodeno_t, old_cap_reconnect_t> ocaps;
 
73
      ::decode(ocaps, p);
 
74
      for (map<inodeno_t,old_cap_reconnect_t>::iterator q = ocaps.begin(); q != ocaps.end(); q++)
 
75
        caps[q->first] = q->second;
 
76
    }
58
77
    while (p.end()) {
59
78
      realms.push_back(ceph_mds_snaprealm_reconnect());
60
79
      ::decode(realms.back(), p);