This is Unofficial EPICS BASE Doxygen Site
epics::pvAccess::SerializationHelper Class Reference

#include "serializationHelper.h"

Static Public Member Functions

static epics::pvData::PVStructure::shared_pointer deserializePVRequest (epics::pvData::ByteBuffer *payloadBuffer, epics::pvData::DeserializableControl *control)
 
static epics::pvData::PVStructure::shared_pointer deserializeStructureAndCreatePVStructure (epics::pvData::ByteBuffer *payloadBuffer, epics::pvData::DeserializableControl *control, epics::pvData::PVStructure::shared_pointer const &existingStructure=epics::pvData::PVStructure::shared_pointer())
 
static epics::pvData::PVStructure::shared_pointer deserializeStructureFull (epics::pvData::ByteBuffer *payloadBuffer, epics::pvData::DeserializableControl *control)
 
static epics::pvData::PVField::shared_pointer deserializeFull (epics::pvData::ByteBuffer *payloadBuffer, epics::pvData::DeserializableControl *control)
 
static void serializeNullField (epics::pvData::ByteBuffer *buffer, epics::pvData::SerializableControl *control)
 
static void serializePVRequest (epics::pvData::ByteBuffer *buffer, epics::pvData::SerializableControl *control, epics::pvData::PVStructure::shared_pointer const &pvRequest)
 
static void serializeStructureFull (epics::pvData::ByteBuffer *buffer, epics::pvData::SerializableControl *control, epics::pvData::PVStructure::shared_pointer const &pvStructure)
 
static void serializeFull (epics::pvData::ByteBuffer *buffer, epics::pvData::SerializableControl *control, const epics::pvData::PVField::const_shared_pointer &pvField)
 

Static Public Attributes

static epics::pvData::PVDataCreatePtr _pvDataCreate
 

Detailed Description

Definition at line 23 of file serializationHelper.h.

Member Function Documentation

PVField::shared_pointer epics::pvAccess::SerializationHelper::deserializeFull ( epics::pvData::ByteBuffer payloadBuffer,
epics::pvData::DeserializableControl control 
)
static

Deserialize optional PVField.

Parameters
payloadBufferdata buffer.
Returns
deserialized PVField, can be null.

Definition at line 55 of file serializationHelper.cpp.

56 {
57  PVField::shared_pointer pvField;
58  FieldConstPtr field = control->cachedDeserialize(buffer);
59  if (field)
60  {
61  pvField = _pvDataCreate->createPVField(field);
62  pvField->deserialize(buffer, control);
63  }
64  return pvField;
65 }
virtual std::tr1::shared_ptr< const Field > cachedDeserialize(ByteBuffer *buffer)=0
std::tr1::shared_ptr< const Field > FieldConstPtr
Definition: pvIntrospect.h:137
static epics::pvData::PVDataCreatePtr _pvDataCreate
PVStructure::shared_pointer epics::pvAccess::SerializationHelper::deserializePVRequest ( epics::pvData::ByteBuffer payloadBuffer,
epics::pvData::DeserializableControl control 
)
static

Deserialize PVRequest.

Parameters
payloadBufferdata buffer.
Returns
deserialized PVRequest, can be null.

Definition at line 26 of file serializationHelper.cpp.

27 {
28  // for now ordinary structure, later can be changed
29  return deserializeStructureFull(buffer, control);
30 }
static epics::pvData::PVStructure::shared_pointer deserializeStructureFull(epics::pvData::ByteBuffer *payloadBuffer, epics::pvData::DeserializableControl *control)
PVStructure::shared_pointer epics::pvAccess::SerializationHelper::deserializeStructureAndCreatePVStructure ( epics::pvData::ByteBuffer payloadBuffer,
epics::pvData::DeserializableControl control,
epics::pvData::PVStructure::shared_pointer const &  existingStructure = epics::pvData::PVStructure::shared_pointer() 
)
static

Deserialize Structure and create PVStructure instance, if necessary.

Parameters
payloadBufferdata buffer.
controldeserialization control.
existingStructureif deserialized Field matches existingStrcuture Field, then existingStructure instance is returned. null value is allowed.
Returns
PVStructure instance, can be null.

Definition at line 32 of file serializationHelper.cpp.

33 {
34  FieldConstPtr field = control->cachedDeserialize(buffer);
35  if (!field)
36  return PVStructure::shared_pointer();
37 
38  if (existingStructure && *field == *existingStructure->getField())
39  return existingStructure;
40  else if(field->getType()==structure)
41  return _pvDataCreate->createPVStructure(std::tr1::static_pointer_cast<const Structure>(field));
42  else
43  throw std::runtime_error("deserializeStructureAndCreatePVStructure expects a Structure");
44 }
virtual std::tr1::shared_ptr< const Field > cachedDeserialize(ByteBuffer *buffer)=0
std::tr1::shared_ptr< const Field > FieldConstPtr
Definition: pvIntrospect.h:137
static epics::pvData::PVDataCreatePtr _pvDataCreate
PVStructure::shared_pointer epics::pvAccess::SerializationHelper::deserializeStructureFull ( epics::pvData::ByteBuffer payloadBuffer,
epics::pvData::DeserializableControl control 
)
static

Deserialize optional PVStructrue.

Parameters
payloadBufferdata buffer.
Returns
deserialized PVStructure, can be null.

Definition at line 46 of file serializationHelper.cpp.

47 {
48  PVField::shared_pointer ret(deserializeFull(buffer, control));
49  if(!ret) return PVStructure::shared_pointer();
50  else if(ret->getField()->getType()!=structure)
51  throw std::runtime_error("deserializeStructureFull expects a Structure");
53 }
shared_ptr< T > static_pointer_cast(shared_ptr< U > const &r) BOOST_NOEXCEPT
Definition: shared_ptr.hpp:788
static epics::pvData::PVField::shared_pointer deserializeFull(epics::pvData::ByteBuffer *payloadBuffer, epics::pvData::DeserializableControl *control)
Data interface for a structure,.
Definition: pvData.h:712
void epics::pvAccess::SerializationHelper::serializeFull ( epics::pvData::ByteBuffer buffer,
epics::pvData::SerializableControl control,
const epics::pvData::PVField::const_shared_pointer &  pvField 
)
static

Serialize optional PVField.

Parameters
bufferdata buffer.

Definition at line 84 of file serializationHelper.cpp.

85 {
86  if (!pvField)
87  {
88  serializeNullField(buffer, control);
89  }
90  else
91  {
92  control->cachedSerialize(pvField->getField(), buffer);
93  pvField->serialize(buffer, control);
94  }
95 }
static void serializeNullField(epics::pvData::ByteBuffer *buffer, epics::pvData::SerializableControl *control)
virtual void cachedSerialize(std::tr1::shared_ptr< const Field > const &field, ByteBuffer *buffer)=0
void epics::pvAccess::SerializationHelper::serializeNullField ( epics::pvData::ByteBuffer buffer,
epics::pvData::SerializableControl control 
)
static

Serialize null PVField.

Parameters
buffer
control

Definition at line 67 of file serializationHelper.cpp.

68 {
69  control->ensureBuffer(1);
71 }
EPICS_ALWAYS_INLINE void putByte(int8 value)
Definition: byteBuffer.h:525
virtual void ensureBuffer(std::size_t size)=0
static const epics::pvData::int8 NULL_TYPE_CODE
void epics::pvAccess::SerializationHelper::serializePVRequest ( epics::pvData::ByteBuffer buffer,
epics::pvData::SerializableControl control,
epics::pvData::PVStructure::shared_pointer const &  pvRequest 
)
static

Serialize PVRequest.

Parameters
bufferdata buffer.

Definition at line 73 of file serializationHelper.cpp.

74 {
75  // for now ordinary structure, later can be changed
76  serializeStructureFull(buffer, control, pvRequest);
77 }
static void serializeStructureFull(epics::pvData::ByteBuffer *buffer, epics::pvData::SerializableControl *control, epics::pvData::PVStructure::shared_pointer const &pvStructure)
void epics::pvAccess::SerializationHelper::serializeStructureFull ( epics::pvData::ByteBuffer buffer,
epics::pvData::SerializableControl control,
epics::pvData::PVStructure::shared_pointer const &  pvStructure 
)
static

Serialize optional PVStructrue.

Parameters
bufferdata buffer.

Definition at line 79 of file serializationHelper.cpp.

80 {
81  serializeFull(buffer, control, pvStructure);
82 }
static void serializeFull(epics::pvData::ByteBuffer *buffer, epics::pvData::SerializableControl *control, const epics::pvData::PVField::const_shared_pointer &pvField)

Member Data Documentation

PVDataCreatePtr epics::pvAccess::SerializationHelper::_pvDataCreate
static

Definition at line 27 of file serializationHelper.h.


The documentation for this class was generated from the following files: