WSF
WsfXIO_Connection.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFXIO_CONNECTION_HPP
13#define WSFXIO_CONNECTION_HPP
14
15#include "wsf_export.h"
16
17#include <memory>
18#include <string>
19
20#include "GenUniqueId.hpp"
21#include "PakConnection.hpp"
22class PakSocketIO;
23class PakTCP_IO;
24class PakUDP_IO;
25#include "UtReferenceTracked.hpp"
26class UtScriptClass;
27class UtScriptTypes;
28#include "WsfXIO.hpp"
29class WsfXIO_Packet;
30class WsfXIO_InitPkt;
32
36class WSF_EXPORT WsfXIO_Connection : public PakConnection, public UtReferenceTracked
37{
38public:
39 friend class WsfXIO_Interface;
40
44 WsfXIO_Connection* GetLinkedConnection() const { return mLinkedConnectionPtr; }
45
47 void SetLinkedConnection(WsfXIO_Connection* aConnectionPtr) { mLinkedConnectionPtr = aConnectionPtr; }
48
50 PakSocketIO& GetIO() const { return *mIOPtr; }
51
53 PakTCP_IO* GetTCP_IO() const { return mTCP_IO_Ptr; }
54
56 PakUDP_IO* GetUDP_IO() const { return mUDP_IO_Ptr; }
57
59 WsfXIO_Interface& GetInterface() { return *mInterfacePtr; }
60
62 wsf::xio::ApplicationType GetApplicationType() const { return mApplicationType; }
63
65 void SetApplicationType(wsf::xio::ApplicationType aApplicationType) { mApplicationType = aApplicationType; }
66
68 void Send(WsfXIO_Packet& aPkt);
69
71 int GetConnectionId() const { return mConnectionId; }
72
74 const std::string& GetApplicationName() const { return mApplicationName; }
75
77 void SetApplicationName(const std::string& aApplicationName) { mApplicationName = aApplicationName; }
78
80 void SetApplicationId(GenUniqueId& aApplicationId) { mApplicationId = aApplicationId; }
81
84 GenUniqueId GetApplicationId() const { return mApplicationId; }
85
87 bool IsReliable() const { return mTCP_IO_Ptr != nullptr; }
88
90 void SetInitialized() { mIsInitialized = true; }
91
93 bool IsInitialized() const { return mIsInitialized; }
94
96 bool IsDisconnecting() const { return mDisconnecting; }
97
98 void SetDisconnecting() { mDisconnecting = true; }
99
100 void SetClockOffset(double aRecvOffset);
101
102 double GetClockOffset() const;
103
105 bool HasClockTranslation() { return mHasClockTranslation; }
106 void SetHasClockTranslation(bool aUseTranslation) { mHasClockTranslation = aUseTranslation; }
107
109 double GetLastTimeStamp() const { return mLastTimeStamp; }
110 void SetLastTimeStamp(double aTimeStamp) { mLastTimeStamp = aTimeStamp; }
111
112 static std::unique_ptr<UtScriptClass> CreateScriptClass(UtScriptTypes* aScriptTypesPtr);
113 static UtScriptClass* GetScriptClass() { return mScriptClassPtr; }
114
115 static UtScriptClass* mScriptClassPtr;
116
117protected:
118 // Connections are created and deleted by WsfXIO_Interface
119
120 WsfXIO_Connection(WsfXIO_Interface* aInterfacePtr, PakSocketIO* aIOPtr);
121
122 ~WsfXIO_Connection() override;
123
124private:
125 std::string mApplicationName;
126 GenUniqueId mApplicationId;
127 int mConnectionId;
128 WsfXIO_Interface* mInterfacePtr;
129 WsfXIO_Connection* mLinkedConnectionPtr;
130 PakSocketIO* mIOPtr;
131 PakTCP_IO* mTCP_IO_Ptr;
132 PakUDP_IO* mUDP_IO_Ptr;
133 wsf::xio::ApplicationType mApplicationType;
134 bool mIsServer;
135 bool mIsInitialized;
136 bool mDisconnecting;
137 bool mHasClockTranslation;
138 double mRecvClockOffset;
139 double mLastTimeStamp;
140};
141
142#endif
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
WsfXIO_Connection * GetLinkedConnection() const
Definition WsfXIO_Connection.hpp:44
bool IsReliable() const
Returns true if the connection is reliable.
Definition WsfXIO_Connection.hpp:87
void SetApplicationName(const std::string &aApplicationName)
Sets the name of the connected application.
Definition WsfXIO_Connection.hpp:77
void SetLastTimeStamp(double aTimeStamp)
Definition WsfXIO_Connection.hpp:110
bool IsDisconnecting() const
Returns 'true' if the connection is in the process of disconnecting.
Definition WsfXIO_Connection.hpp:96
PakSocketIO & GetIO() const
Returns the IO Device used in this connection.
Definition WsfXIO_Connection.hpp:50
friend class WsfXIO_Interface
Definition WsfXIO_Connection.hpp:39
void SetApplicationType(wsf::xio::ApplicationType aApplicationType)
Sets the application type.
Definition WsfXIO_Connection.hpp:65
void SetLinkedConnection(WsfXIO_Connection *aConnectionPtr)
Sets the linked connection.
Definition WsfXIO_Connection.hpp:47
WsfXIO_Connection(WsfXIO_Interface *aInterfacePtr, PakSocketIO *aIOPtr)
Definition WsfXIO_Connection.cpp:22
PakUDP_IO * GetUDP_IO() const
Returns the GenUDP_IO is this connection uses UDP, returns null otherwise.
Definition WsfXIO_Connection.hpp:56
void SetDisconnecting()
Definition WsfXIO_Connection.hpp:98
static UtScriptClass * GetScriptClass()
Definition WsfXIO_Connection.hpp:113
int GetConnectionId() const
Returns a locally unique identifier for this connection.
Definition WsfXIO_Connection.hpp:71
GenUniqueId GetApplicationId() const
Definition WsfXIO_Connection.hpp:84
double GetLastTimeStamp() const
Returns the last time stamp (simulation-time) from a PDU received by this connection.
Definition WsfXIO_Connection.hpp:109
void SetApplicationId(GenUniqueId &aApplicationId)
Sets the application ID.
Definition WsfXIO_Connection.hpp:80
void SetInitialized()
Specifies that the connection is initialized.
Definition WsfXIO_Connection.hpp:90
bool IsInitialized() const
Returns 'true' if the connection is initialized.
Definition WsfXIO_Connection.hpp:93
wsf::xio::ApplicationType GetApplicationType() const
Returns the application type.
Definition WsfXIO_Connection.hpp:62
void SetHasClockTranslation(bool aUseTranslation)
Definition WsfXIO_Connection.hpp:106
static UtScriptClass * mScriptClassPtr
Definition WsfXIO_Connection.hpp:115
const std::string & GetApplicationName() const
Returns the name of the connected application.
Definition WsfXIO_Connection.hpp:74
bool HasClockTranslation()
Returns 'true' if the clock offset is configured for packet synchronization with this connection.
Definition WsfXIO_Connection.hpp:105
WsfXIO_Interface & GetInterface()
Returns the associated WsfXIO_Interface.
Definition WsfXIO_Connection.hpp:59
PakTCP_IO * GetTCP_IO() const
Returns the GenTCP_IO is this connection uses TCP, returns null otherwise.
Definition WsfXIO_Connection.hpp:53
Definition WsfXIO_Interface.hpp:54
Base class for XIO Packets. Provides the header information.
Definition WsfXIO_Packet.hpp:46
ApplicationType
Definition WsfXIO.hpp:24
Copyrights Multiple, All Rights Reserved