@@ -53,21 +53,14 @@ namespace JSBSim {
5353CLASS IMPLEMENTATION
5454%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
5555
56- FGInputSocket::FGInputSocket (FGFDMExec* fdmex) :
57- FGInputType (fdmex), socket( 0 ), SockProtocol(FGfdmSocket::ptTCP),
56+ FGInputSocket::FGInputSocket (FGFDMExec* fdmex, bool isEnabled ) :
57+ FGInputType (fdmex, isEnabled ), SockProtocol(FGfdmSocket::ptTCP),
5858 BlockingInput (false )
5959{
6060}
6161
6262// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6363
64- FGInputSocket::~FGInputSocket ()
65- {
66- delete socket;
67- }
68-
69- // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
70-
7164bool FGInputSocket::Load (Element* el)
7265{
7366 if (!FGInputType::Load (el))
@@ -92,17 +85,55 @@ bool FGInputSocket::Load(Element* el)
9285
9386bool FGInputSocket::InitModel (void )
9487{
95- if (FGInputType::InitModel ()) {
96- delete socket;
97- socket = new FGfdmSocket (SockPort, SockProtocol);
88+ if (!FGInputType::InitModel ())
89+ return false ;
9890
99- if (socket == 0 ) return false ;
100- if (!socket-> GetConnectStatus ()) return false ;
91+ if (enabled)
92+ return CreateSocket () ;
10193
102- return true ;
103- }
94+ return true ;
95+ }
96+
97+ // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
98+
99+ bool FGInputSocket::CreateSocket ()
100+ {
101+ socket = std::make_unique<FGfdmSocket>(SockPort, SockProtocol);
102+
103+ if (!socket) return false ;
104+ if (!socket->GetConnectStatus ()) return false ;
105+
106+ return true ;
107+ }
108+
109+ // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
110+
111+ void FGInputSocket::Enable ()
112+ {
113+ if (enabled) return ; // already enabled
114+ FGInputType::Enable ();
115+ CreateSocket ();
116+ }
117+
118+ // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
119+
120+ void FGInputSocket::Disable ()
121+ {
122+ FGInputType::Disable ();
123+ socket.reset ();
124+ }
125+
126+ // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
127+
128+ bool FGInputSocket::Toggle ()
129+ {
130+ bool enabled_status = FGInputType::Toggle ();
131+ if (enabled_status)
132+ CreateSocket ();
133+ else
134+ socket.reset ();
104135
105- return false ;
136+ return enabled_status ;
106137}
107138
108139// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0 commit comments