cisst-saw
Loading...
Searching...
No Matches
mtsSocketProxyServer.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 Author(s): Peter Kazanzides
6 Created on: 2013-08-06
7
8 (C) Copyright 2013-2023 Johns Hopkins University (JHU), All Rights Reserved.
9
10--- begin cisst license - do not edit ---
11
12This software is provided "as is" under an open source license, with
13no warranty. The complete license can be found in license.txt and
14http://www.cisst.org/cisst/license.txt.
15
16--- end cisst license ---
17*/
18
19
25
26#ifndef _mtsSocketProxyServer_h
27#define _mtsSocketProxyServer_h
28
31
33
34class FunctionVoidProxy;
35class FunctionReadProxy;
36class FunctionWriteProxy;
37class FunctionQualifiedReadProxy;
38class FunctionVoidReturnProxy;
39class FunctionWriteReturnProxy;
40class mtsEventSenderVoid;
41class mtsEventSenderWrite;
42class mtsProxySerializer;
43class FinishedEventList;
44
46
48{
49 CMN_DECLARE_SERVICES(CMN_DYNAMIC_CREATION, CMN_LOG_ALLOW_DEFAULT);
50public:
51 std::string Name;
52 std::string ComponentName;
54 unsigned short Port;
55
57 mtsSocketProxyServerConstructorArg(const std::string &name, const std::string &componentName,
58 const std::string &providedInterfaceName, unsigned short port) :
59 mtsGenericObject(), Name(name), ComponentName(componentName), ProvidedInterfaceName(providedInterfaceName), Port(port) {}
63
64 void SerializeRaw(std::ostream & outputStream) const override;
65 void DeSerializeRaw(std::istream & inputStream) override;
66
67 void ToStream(std::ostream & outputStream) const override;
68
70 void ToStreamRaw(std::ostream & outputStream, const char delimiter = ' ',
71 bool headerOnly = false, const std::string & headerPrefix = "") const override;
72
75 bool FromStreamRaw(std::istream & inputStream, const char delimiter = ' ') override;
76};
77
79
81{
83
84 protected:
85
88
92 typedef std::map<osaIPandPort, mtsProxySerializer *> ClientMapType;
93
101
105
114
115 // List of connected clients
117
118 FinishedEventList *FinishedEvents;
119
120 // For memory cleanup
121 std::vector<mtsCommandBase *> SpecialCommands;
122
123 bool Init(const std::string &componentName, const std::string &providedInterfaceName);
124
127 bool CreateServerProxy(const std::string & requiredInterfaceName, size_t providedMailboxSize);
128
130 bool GetHandleVoid(const std::string &commandName, std::string &handleString) const;
131 bool GetHandleRead(const std::string &commandName, std::string &handleString) const;
132 bool GetHandleWrite(const std::string &commandName, std::string &handleString) const;
133 bool GetHandleQualifiedRead(const std::string &commandName, std::string &handleString) const;
134 bool GetHandleVoidReturn(const std::string &commandName, std::string &handleString) const;
135 bool GetHandleWriteReturn(const std::string &commandName, std::string &handleString) const;
136 void EventEnable(const std::string &eventHandleAndName);
137 void EventDisable(const std::string &eventHandleAndName);
138
140 mtsExecutionResult GetInitData(std::string &outputArgSerialized, mtsProxySerializer *serializer) const;
141
142 public:
149 mtsSocketProxyServer(const std::string & name, const std::string & componentName,
150 const std::string & providedInterfaceName, unsigned short port);
151
153
156
157 void Configure(const std::string &) override {}
158
159 void Startup(void) override;
160
161 void Run(void) override;
162
163 void Cleanup(void) override;
164
169 mtsProxySerializer *GetSerializerForClient(const osaIPandPort &ip_port) const;
170
174 mtsProxySerializer *GetSerializerForCurrentClient(void) const;
175
176 mtsCommandWriteBase *AllocateFinishedEvent(const std::string &eventHandle);
177
178};
179
181
182#endif // _mtsSocketProxyServer_h
Definition cmnNamedMap.h:54
Definition mtsCommandWriteBase.h:40
Definition mtsExecutionResult.h:34
mtsGenericObject(void)
Definition mtsGenericObject.h:77
Definition mtsInterfaceCommon.h:888
Definition mtsSocketProxyServer.h:48
std::string Name
Definition mtsSocketProxyServer.h:51
~mtsSocketProxyServerConstructorArg()
Definition mtsSocketProxyServer.h:62
std::string ProvidedInterfaceName
Definition mtsSocketProxyServer.h:53
void SerializeRaw(std::ostream &outputStream) const override
bool FromStreamRaw(std::istream &inputStream, const char delimiter=' ') override
void DeSerializeRaw(std::istream &inputStream) override
std::string ComponentName
Definition mtsSocketProxyServer.h:52
mtsSocketProxyServerConstructorArg(const mtsSocketProxyServerConstructorArg &other)
Definition mtsSocketProxyServer.h:60
void ToStream(std::ostream &outputStream) const override
void ToStreamRaw(std::ostream &outputStream, const char delimiter=' ', bool headerOnly=false, const std::string &headerPrefix="") const override
mtsSocketProxyServerConstructorArg(const std::string &name, const std::string &componentName, const std::string &providedInterfaceName, unsigned short port)
Definition mtsSocketProxyServer.h:57
unsigned short Port
Definition mtsSocketProxyServer.h:54
mtsSocketProxyServerConstructorArg()
Definition mtsSocketProxyServer.h:56
Definition mtsSocketProxyServer.h:81
void EventDisable(const std::string &eventHandleAndName)
std::vector< mtsCommandBase * > SpecialCommands
Definition mtsSocketProxyServer.h:121
FunctionVoidReturnProxyMapType FunctionVoidReturnProxyMap
Definition mtsSocketProxyServer.h:110
void EventEnable(const std::string &eventHandleAndName)
FinishedEventList * FinishedEvents
Definition mtsSocketProxyServer.h:118
mtsInterfaceProvidedDescription InterfaceDescription
Definition mtsSocketProxyServer.h:87
void Startup(void) override
bool GetHandleRead(const std::string &commandName, std::string &handleString) const
FunctionWriteProxyMapType FunctionWriteProxyMap
Definition mtsSocketProxyServer.h:107
bool GetHandleVoidReturn(const std::string &commandName, std::string &handleString) const
bool Init(const std::string &componentName, const std::string &providedInterfaceName)
EventGeneratorVoidProxyMapType EventGeneratorVoidProxyMap
Definition mtsSocketProxyServer.h:112
mtsProxySerializer * GetSerializerForClient(const osaIPandPort &ip_port) const
cmnNamedMap< mtsEventSenderWrite > EventGeneratorWriteProxyMapType
Definition mtsSocketProxyServer.h:104
cmnNamedMap< FunctionVoidReturnProxy > FunctionVoidReturnProxyMapType
Definition mtsSocketProxyServer.h:99
mtsCommandWriteBase * AllocateFinishedEvent(const std::string &eventHandle)
mtsProxySerializer * GetSerializerForCurrentClient(void) const
FunctionVoidProxyMapType FunctionVoidProxyMap
Definition mtsSocketProxyServer.h:106
cmnNamedMap< FunctionVoidProxy > FunctionVoidProxyMapType
Definition mtsSocketProxyServer.h:95
mtsSocketProxyServer(const std::string &name, const std::string &componentName, const std::string &providedInterfaceName, unsigned short port)
std::map< osaIPandPort, mtsProxySerializer * > ClientMapType
Definition mtsSocketProxyServer.h:92
FunctionWriteReturnProxyMapType FunctionWriteReturnProxyMap
Definition mtsSocketProxyServer.h:111
bool GetInterfaceDescription(mtsInterfaceProvidedDescription &desc) const
bool CreateServerProxy(const std::string &requiredInterfaceName, size_t providedMailboxSize)
Create server proxy.
void Cleanup(void) override
osaSocket Socket
Definition mtsSocketProxyServer.h:86
FunctionReadProxyMapType FunctionReadProxyMap
Definition mtsSocketProxyServer.h:108
EventGeneratorWriteProxyMapType EventGeneratorWriteProxyMap
Definition mtsSocketProxyServer.h:113
void Run(void) override
FunctionQualifiedReadProxyMapType FunctionQualifiedReadProxyMap
Definition mtsSocketProxyServer.h:109
cmnNamedMap< FunctionWriteReturnProxy > FunctionWriteReturnProxyMapType
Definition mtsSocketProxyServer.h:100
bool GetHandleQualifiedRead(const std::string &commandName, std::string &handleString) const
cmnNamedMap< FunctionReadProxy > FunctionReadProxyMapType
Definition mtsSocketProxyServer.h:97
bool GetHandleVoid(const std::string &commandName, std::string &handleString) const
virtual ~mtsSocketProxyServer()
mtsSocketProxyServer(const mtsSocketProxyServerConstructorArg &arg)
ClientMapType ClientMap
Definition mtsSocketProxyServer.h:116
cmnNamedMap< FunctionQualifiedReadProxy > FunctionQualifiedReadProxyMapType
Definition mtsSocketProxyServer.h:98
bool GetHandleWrite(const std::string &commandName, std::string &handleString) const
void AddSpecialCommands(void)
cmnNamedMap< mtsEventSenderVoid > EventGeneratorVoidProxyMapType
Definition mtsSocketProxyServer.h:103
cmnNamedMap< FunctionWriteProxy > FunctionWriteProxyMapType
Definition mtsSocketProxyServer.h:96
void Configure(const std::string &) override
Definition mtsSocketProxyServer.h:157
mtsExecutionResult GetInitData(std::string &outputArgSerialized, mtsProxySerializer *serializer) const
bool GetHandleWriteReturn(const std::string &commandName, std::string &handleString) const
mtsTaskContinuous(const std::string &name, unsigned int sizeStateTable=256, bool newThread=true)
Definition osaSocket.h:175
const int CMN_DYNAMIC_CREATION_ONEARG
Definition cmnClassRegisterMacros.h:330
#define CMN_DECLARE_SERVICES_INSTANTIATION(className)
Definition cmnClassRegisterMacros.h:199
const int CMN_DYNAMIC_CREATION
Definition cmnClassRegisterMacros.h:328
#define CISST_EXPORT
Definition cmnExportMacros.h:50
#define CMN_LOG_ALLOW_DEFAULT
Definition cmnLogLoD.h:76
Rules of exporting.
Forward declarations and #define for cisstMultiTask.
Defines a continuously executing task.
Declaration of osaSocket.
Definition osaSocket.h:156