dcrud  0.0.0
Distributed data and services
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
Shareable.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <dcrud/GUID.hpp>
4 #include <dcrud/ClassID.hpp>
5 #include <io/ByteBuffer.hpp>
6 #include <util/types.h>
7 
8 namespace dcrud {
9 
10  class Cache;
11  class ParticipantImpl;
12 
13  class Shareable {
14  public:
15 
16  Shareable( const ClassID & classId ) :
17  _class( classId )
18  {}
19 
20  virtual ~ Shareable() {}
21 
22  virtual const GUID & getGUID( void ) const { return _id; }
23 
24  virtual const ClassID & getClassID( void ) const { return _class; }
25 
26  virtual void serialize( io::ByteBuffer & target ) const = 0;
27 
28  virtual void serializeClass( io::ByteBuffer & target ) const {
29  _class.serialize( target );
30  }
31 
32  virtual void unserialize( io::ByteBuffer & source ) = 0;
33 
34  private:
35 
36  GUID _id;
37  const ClassID _class;
38 
39  friend class Cache;
40  friend class ParticipantImpl;
41  };
42 }
static void serialize(Type type, io::ByteBuffer &buffer)
virtual void serializeClass(io::ByteBuffer &target) const
Definition: Shareable.hpp:28
friend class Cache
Definition: Shareable.hpp:39
virtual const GUID & getGUID(void) const
Definition: Shareable.hpp:22
friend class ParticipantImpl
Definition: Shareable.hpp:40
virtual ~Shareable()
Definition: Shareable.hpp:20
virtual const ClassID & getClassID(void) const
Definition: Shareable.hpp:24
virtual void unserialize(io::ByteBuffer &source)=0
virtual void serialize(io::ByteBuffer &target) const =0
Shareable(const ClassID &classId)
Definition: Shareable.hpp:16