DDS  ver. 3.4
CommandAttachmentImpl.h
Go to the documentation of this file.
1 // Copyright 2014 GSI, Inc. All rights reserved.
2 //
3 //
4 //
5 #ifndef COMMANDATTACHMENTIMPL_H
6 #define COMMANDATTACHMENTIMPL_H
7 // DDS
8 #include "AgentsInfoCmd.h"
9 #include "AssignUserTaskCmd.h"
10 #include "BinaryAttachmentCmd.h"
13 #include "CustomCmdCmd.h"
14 #include "GetPropValuesCmd.h"
15 #include "HostInfoCmd.h"
16 #include "ProgressCmd.h"
17 #include "ProtocolCommands.h"
18 #include "ProtocolMessage.h"
19 #include "ReplyCmd.h"
20 #include "SimpleMsgCmd.h"
21 #include "SubmitCmd.h"
22 #include "UUIDCmd.h"
23 #include "UpdateKeyCmd.h"
24 #include "UpdateTopologyCmd.h"
25 #include "UserTaskDoneCmd.h"
26 #include "VersionCmd.h"
27 
28 #define REGISTER_CMD_ATTACHMENT(_class, _cmd) \
29  template <> \
30  struct SCommandAttachmentImpl<_cmd> \
31  { \
32  typedef std::shared_ptr<_class> ptr_t; \
33  \
34  static ptr_t decode(CProtocolMessage::protocolMessagePtr_t _msg) \
35  { \
36  ptr_t p = std::make_shared<_class>(); \
37  p->convertFromData(_msg->bodyToContainer()); \
38  return p; \
39  } \
40  \
41  static CProtocolMessage::protocolMessagePtr_t encode(const _class& _attachment, uint64_t _ID) \
42  { \
43  MiscCommon::BYTEVector_t data; \
44  _attachment.convertToData(&data); \
45  return std::make_shared<CProtocolMessage>(_cmd, data, _ID); \
46  } \
47  };
48 
49 namespace dds
50 {
51  namespace protocol_api
52  {
53  //----------------------------------------------------------------------
54  struct SEmptyCmd
55  {
56  };
57  //----------------------------------------------------------------------
58  template <ECmdType>
60  //----------------------------------------------------------------------
61  template <ECmdType _cmd>
63  {
64  typedef std::shared_ptr<SEmptyCmd> ptr_t;
65 
67  {
68  return ptr_t();
69  }
70 
71  static CProtocolMessage::protocolMessagePtr_t encode(const SEmptyCmd& /*_attachment*/, uint64_t _ID)
72  {
74  return std::make_shared<CProtocolMessage>(_cmd, data, _ID);
75  }
76  };
77 
84  REGISTER_CMD_ATTACHMENT(SBinaryAttachmentCmd, cmdBINARY_ATTACHMENT)
88  REGISTER_CMD_ATTACHMENT(SAssignUserTaskCmd, cmdASSIGN_USER_TASK)
89  REGISTER_CMD_ATTACHMENT(SBinaryAttachmentReceivedCmd, cmdBINARY_ATTACHMENT_RECEIVED)
90  REGISTER_CMD_ATTACHMENT(SBinaryAttachmentStartCmd, cmdBINARY_ATTACHMENT_START)
95  REGISTER_CMD_ATTACHMENT(SUpdateTopologyCmd, cmdUPDATE_TOPOLOGY)
104  } // namespace protocol_api
105 } // namespace dds
106 
107 #endif /* PROTOCOLMESSAGES_H_ */
Definition: ProtocolCommands.h:67
Definition: ProtocolCommands.h:49
Definition: ProtocolCommands.h:61
Definition: ProtocolCommands.h:45
Definition: ProtocolCommands.h:71
Definition: ProtocolCommands.h:68
Definition: CommandAttachmentImpl.h:59
Definition: ProtocolCommands.h:48
Definition: ProtocolCommands.h:66
Definition: CommandAttachmentImpl.h:54
std::shared_ptr< SEmptyCmd > ptr_t
Definition: CommandAttachmentImpl.h:64
static CProtocolMessage::protocolMessagePtr_t encode(const SEmptyCmd &, uint64_t _ID)
Definition: CommandAttachmentImpl.h:71
Definition: ProtocolCommands.h:35
Definition: ProtocolCommands.h:58
Definition: ProtocolCommands.h:33
Definition: ProtocolCommands.h:42
Definition: ProtocolCommands.h:32
Definition: ProtocolCommands.h:70
Definition: AgentConnectionManager.h:13
Definition: ProtocolCommands.h:65
Definition: ProtocolCommands.h:55
static ptr_t decode(CProtocolMessage::protocolMessagePtr_t _msg)
Definition: CommandAttachmentImpl.h:66
Definition: ProtocolCommands.h:51
Definition: ProtocolCommands.h:44
Definition: ProtocolCommands.h:37
Definition: ProtocolCommands.h:39
REGISTER_CMD_ATTACHMENT(SVersionCmd, cmdHANDSHAKE) REGISTER_CMD_ATTACHMENT(SSimpleMsgCmd
Definition: ProtocolCommands.h:72
std::vector< unsigned char > BYTEVector_t
An STL vector of bytes.
Definition: def.h:127
Definition: ProtocolCommands.h:41
Definition: ProtocolCommands.h:53
Definition: ProtocolCommands.h:40
Definition: ProtocolCommands.h:31
Definition: ProtocolCommands.h:57
std::shared_ptr< CProtocolMessage > protocolMessagePtr_t
Definition: ProtocolMessage.h:81