namespace ceph {
namespace immutable_obj_cache {
-// TODO : fix compile issue
-/*
void ObjectCacheMsgHeader::encode(bufferlist& bl) const {
ceph::encode(seq, bl);
ceph::encode(type, bl);
ceph::decode(data_len, it);
ceph::decode(reserved, it);
}
-*/
+
+void ObjectCacheMsgData::encode(bufferlist& bl) {
+ ceph::encode(m_image_size, bl);
+ ceph::encode(m_read_offset, bl);
+ ceph::encode(m_read_len, bl);
+ ceph::encode(m_pool_name, bl);
+ ceph::encode(m_image_name, bl);
+ ceph::encode(m_oid, bl);
+}
+
+void ObjectCacheMsgData::decode(bufferlist& bl) {
+ auto i = bl.cbegin();
+ ceph::decode(m_image_size, i);
+ ceph::decode(m_read_offset, i);
+ ceph::decode(m_read_len, i);
+ ceph::decode(m_pool_name, i);
+ ceph::decode(m_image_name, i);
+ ceph::decode(m_oid, i);
+}
+
+void ObjectCacheRequest::encode() {
+ m_data.encode(m_data_buffer);
+ m_head.data_len = m_data_buffer.length();
+ m_head.data_len = m_data_buffer.length();
+ ceph_assert(m_head_buffer.length() == 0);
+ m_head.encode(m_head_buffer);
+ ceph_assert(sizeof(ObjectCacheMsgHeader) == m_head_buffer.length());
+}
+
+bufferlist ObjectCacheRequest::get_head_buffer() {
+ return m_head_buffer;
+}
+bufferlist ObjectCacheRequest::get_data_buffer() {
+ return m_data_buffer;
+}
+
+ObjectCacheRequest* decode_object_cache_request(
+ ObjectCacheMsgHeader* head, bufferlist data_buffer) {
+ ObjectCacheRequest* req = new ObjectCacheRequest();
+ req->m_head = *head;
+ ceph_assert(req->m_head.data_len == data_buffer.length());
+ req->m_data.decode(data_buffer);
+ return req;
+}
+
+ObjectCacheRequest* decode_object_cache_request(
+ bufferlist head_buffer, bufferlist data_buffer) {
+ return decode_object_cache_request((ObjectCacheMsgHeader*)(head_buffer.c_str()), data_buffer);
+}
} // namespace immutable_obj_cache
} // namespace ceph
uint32_t data_len;
uint32_t reserved;
- void encode(bufferlist& bl) const {
- ceph::encode(seq, bl);
- ceph::encode(type, bl);
- ceph::encode(version, bl);
- ceph::encode(padding, bl);
- ceph::encode(data_len, bl);
- ceph::encode(reserved, bl);
- }
-
- void decode(bufferlist::const_iterator& it) {
- ceph::decode(seq, it);
- ceph::decode(type, it);
- ceph::decode(version, it);
- ceph::decode(padding, it);
- ceph::decode(data_len, it);
- ceph::decode(reserved, it);
- }
+ void encode(bufferlist& bl) const;
+ void decode(bufferlist::const_iterator& it);
};
class ObjectCacheMsgData {
std::string m_image_name;
std::string m_oid;
- ObjectCacheMsgData(){}
- ~ObjectCacheMsgData(){}
-
- void encode(bufferlist& bl) {
- ceph::encode(m_image_size, bl);
- ceph::encode(m_read_offset, bl);
- ceph::encode(m_read_len, bl);
- ceph::encode(m_pool_name, bl);
- ceph::encode(m_image_name, bl);
- ceph::encode(m_oid, bl);
- }
-
- void decode(bufferlist& bl) {
- auto i = bl.cbegin();
- ceph::decode(m_image_size, i);
- ceph::decode(m_read_offset, i);
- ceph::decode(m_read_len, i);
- ceph::decode(m_pool_name, i);
- ceph::decode(m_image_name, i);
- ceph::decode(m_oid, i);
- }
+ void encode(bufferlist& bl);
+ void decode(bufferlist& bl);
};
class ObjectCacheRequest {
bufferlist m_data_buffer;
GenContext<ObjectCacheRequest*>* m_process_msg;
- ObjectCacheRequest() {}
- ~ObjectCacheRequest() {}
- void encode() {
- m_data.encode(m_data_buffer);
- m_head.data_len = m_data_buffer.length();
- m_head.data_len = m_data_buffer.length();
- assert(m_head_buffer.length() == 0);
- m_head.encode(m_head_buffer);
- assert(sizeof(ObjectCacheMsgHeader) == m_head_buffer.length());
- }
- bufferlist get_head_buffer() {
- return m_head_buffer;
- }
- bufferlist get_data_buffer() {
- return m_data_buffer;
- }
+ void encode();
+ bufferlist get_head_buffer();
+ bufferlist get_data_buffer();
+
};
-inline ObjectCacheRequest* decode_object_cache_request(
- ObjectCacheMsgHeader* head, bufferlist data_buffer) {
- ObjectCacheRequest* req = new ObjectCacheRequest();
- req->m_head = *head;
- assert(req->m_head.data_len == data_buffer.length());
- req->m_data.decode(data_buffer);
- return req;
-}
+ObjectCacheRequest* decode_object_cache_request(
+ ObjectCacheMsgHeader* head, bufferlist data_buffer);
-inline ObjectCacheRequest* decode_object_cache_request(
- bufferlist head_buffer, bufferlist data_buffer) {
- return decode_object_cache_request((ObjectCacheMsgHeader*)(head_buffer.c_str()), data_buffer);
-}
+ObjectCacheRequest* decode_object_cache_request(
+ bufferlist head_buffer, bufferlist data_buffer);
} // namespace immutable_obj_cache
} // namespace ceph