cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mtsSocketProxyCommon.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3 
4 /*
5 
6  Author(s): Peter Kazanzides
7  Created on: 2013-09-08
8 
9  (C) Copyright 2013-2014 Johns Hopkins University (JHU), All Rights Reserved.
10 
11 --- begin cisst license - do not edit ---
12 
13 This software is provided "as is" under an open source license, with
14 no warranty. The complete license can be found in license.txt and
15 http://www.cisst.org/cisst/license.txt.
16 
17 --- end cisst license ---
18 */
19 
20 
27 #ifndef _mtsSocketProxyCommon_h
28 #define _mtsSocketProxyCommon_h
29 
30 #include <string>
31 
33 
35 
36 class mtsFunctionRead;
37 class mtsFunctionWrite;
39 
40 namespace mtsSocketProxy {
41 
42  const unsigned int SOCKET_PROXY_VERSION = 0;
43  const unsigned int SOCKET_PROXY_PACKET_SIZE = 512;
44 
45 };
46 
48  char cmdType; // V (Void), R (Read), W (Write), Q (Qualified Read),
49  // v (Void-blocking), r (VoidReturn), w (Write-blocking), q (WriteReturn)
50  // I (initialization)
51  long long int addr;
52 
53  // Size of serialized version of the CommandHandle (space:1, cmdType:1, addr:8)
54  enum {COMMAND_HANDLE_STRING_SIZE = sizeof(long long int) + 2*sizeof(char) };
55 
56  CommandHandle(char cmd, void *ptr);
57  CommandHandle(const char *str);
58  CommandHandle(const std::string &str);
60 
61  static bool IsValidType(char cmd_type);
62  bool IsValid(void) const;
63 
64  // Serializes the CommandHandle as a string. Returns number of bytes serialized
65  // (COMMAND_HANDLE_STRING_SIZE on success, 0 on failure). For the "char *" version,
66  // make sure the buffer is the correct size.
67  int ToString(char *str) const;
68  int ToString(std::string &str) const;
69 
70  // Deserializes the CommandHandle from a string. Returns number of bytes deserialized
71  // (COMMAND_HANDLE_STRING_SIZE on success, 0 on failure).
72  int FromString(const char *str);
73  int FromString(const std::string &str);
74 
75  bool operator == (const CommandHandle & other) const;
76  bool operator != (const CommandHandle & other) const;
77 };
78 
80 {
82 
83  unsigned int version;
84  unsigned int packetSize;
85  char getInterfaceDescription[CommandHandle::COMMAND_HANDLE_STRING_SIZE];
88  char getHandleWrite[CommandHandle::COMMAND_HANDLE_STRING_SIZE];
89  char getHandleQualifiedRead[CommandHandle::COMMAND_HANDLE_STRING_SIZE];
90  char getHandleVoidReturn[CommandHandle::COMMAND_HANDLE_STRING_SIZE];
91  char getHandleWriteReturn[CommandHandle::COMMAND_HANDLE_STRING_SIZE];
94 
95 public:
102 
103  unsigned int InterfaceVersion(void) const { return version; }
104  unsigned int PacketSize(void) const { return packetSize; }
105  const char *GetInterfaceDescription(void) const { return getInterfaceDescription; }
106  const char *GetHandleVoid(void) const { return getHandleVoid; }
107  const char *GetHandleRead(void) const { return getHandleRead; }
108  const char *GetHandleWrite(void) const { return getHandleWrite; }
109  const char *GetHandleQualifiedRead(void) const { return getHandleQualifiedRead; }
110  const char *GetHandleVoidReturn(void) const { return getHandleVoidReturn; }
111  const char *GetHandleWriteReturn(void) const { return getHandleWriteReturn; }
112  const char *EventEnable(void) const { return eventEnable; }
113  const char *EventDisable(void) const { return eventDisable; }
114 
115  void SerializeRaw(std::ostream & outputStream) const;
116  void DeSerializeRaw(std::istream & inputStream);
117 
118  void ToStream(std::ostream & outputStream) const;
119 
121  void ToStreamRaw(std::ostream & outputStream, const char delimiter = ' ',
122  bool headerOnly = false, const std::string & headerPrefix = "") const;
123 
126  bool FromStreamRaw(std::istream & inputStream, const char delimiter = ' ');
127 };
128 
130 
131 #endif // _mtsSocketProxyCommon_h
const char * GetHandleWrite(void) const
Definition: mtsSocketProxyCommon.h:108
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
std::string ToString()
Definition: cisstVectorEigenAddons.h:30
const char * GetInterfaceDescription(void) const
Definition: mtsSocketProxyCommon.h:105
Definition: mtsSocketProxyCommon.h:54
Definition: mtsFunctionRead.h:37
long long int addr
Definition: mtsSocketProxyCommon.h:51
Definition: mtsFunctionQualifiedRead.h:37
virtual void SerializeRaw(std::ostream &outputStream) const
virtual void DeSerializeRaw(std::istream &inputStream)
virtual void ToStream(std::ostream &outputStream) const
const unsigned int SOCKET_PROXY_PACKET_SIZE
Definition: mtsSocketProxyCommon.h:43
unsigned int PacketSize(void) const
Definition: mtsSocketProxyCommon.h:104
char cmdType
Definition: mtsSocketProxyCommon.h:48
Base class for data object in cisstMultiTask.
Definition: mtsGenericObject.h:56
virtual bool FromStreamRaw(std::istream &inputStream, const char delimiter= ' ')
const char * GetHandleVoidReturn(void) const
Definition: mtsSocketProxyCommon.h:110
const unsigned int SOCKET_PROXY_VERSION
Definition: mtsSocketProxyCommon.h:42
const char * GetHandleVoid(void) const
Definition: mtsSocketProxyCommon.h:106
~CommandHandle()
Definition: mtsSocketProxyCommon.h:59
~mtsSocketProxyInitData()
Definition: mtsSocketProxyCommon.h:101
const char * GetHandleQualifiedRead(void) const
Definition: mtsSocketProxyCommon.h:109
const char * EventEnable(void) const
Definition: mtsSocketProxyCommon.h:112
Definition: mtsSocketProxyCommon.h:79
Definition: mtsSocketProxyCommon.h:47
Defines mtsGenericObject.
#define CMN_DECLARE_SERVICES(hasDynamicCreation, lod)
Definition: cmnClassRegisterMacros.h:116
unsigned int InterfaceVersion(void) const
Definition: mtsSocketProxyCommon.h:103
Rules of exporting.
const char * EventDisable(void) const
Definition: mtsSocketProxyCommon.h:113
CMN_DECLARE_SERVICES_INSTANTIATION(mtsSocketProxyInitData)
Definition: mtsFunctionWrite.h:37
const int CMN_NO_DYNAMIC_CREATION
Definition: cmnClassRegisterMacros.h:328
virtual void ToStreamRaw(std::ostream &outputStream, const char delimiter= ' ', bool headerOnly=false, const std::string &headerPrefix="") const
const char * GetHandleWriteReturn(void) const
Definition: mtsSocketProxyCommon.h:111
#define CMN_LOG_ALLOW_DEFAULT
Definition: cmnLogLoD.h:76
const char * GetHandleRead(void) const
Definition: mtsSocketProxyCommon.h:107