1010#include " mainwindow.h"
1111#include " utils.h"
1212
13- SidepanelMonitor::SidepanelMonitor (QWidget *parent) :
13+ SidepanelMonitor::SidepanelMonitor (QWidget *parent,
14+ const QString &address,
15+ const QString &publisher_port,
16+ const QString &server_port) :
1417 QFrame(parent),
1518 ui(new Ui::SidepanelMonitor),
1619 _zmq_context(1 ),
@@ -20,8 +23,22 @@ SidepanelMonitor::SidepanelMonitor(QWidget *parent) :
2023 _parent(parent)
2124{
2225 ui->setupUi (this );
23- _timer = new QTimer ( this );
26+ this -> set_load_tree_timeout_ms (_load_tree_default_timeout_ms );
2427
28+ if ( !address.isEmpty () )
29+ {
30+ ui->lineEdit_address ->setText (address);
31+ }
32+ if ( !publisher_port.isEmpty () )
33+ {
34+ ui->lineEdit_publisher ->setText (publisher_port);
35+ }
36+ if ( !server_port.isEmpty () )
37+ {
38+ ui->lineEdit_server ->setText (server_port);
39+ }
40+
41+ _timer = new QTimer (this );
2542 connect ( _timer, &QTimer::timeout, this , &SidepanelMonitor::on_timer );
2643}
2744
@@ -97,7 +114,7 @@ void SidepanelMonitor::on_timer()
97114 qDebug () << " Reload tree from server" ;
98115 if ( !getTreeFromServer () ) {
99116 _connected = false ;
100- ui->lineEdit ->setDisabled (false );
117+ ui->lineEdit_address ->setDisabled (false );
101118 _timer->stop ();
102119 connectionUpdate (false );
103120 return ;
@@ -127,8 +144,7 @@ bool SidepanelMonitor::getTreeFromServer()
127144 zmq::socket_t zmq_client ( _zmq_context, ZMQ_REQ );
128145 zmq_client.connect ( _connection_address_req.c_str () );
129146
130- int timeout_ms = 1000 ;
131- zmq_client.setsockopt (ZMQ_RCVTIMEO ,&timeout_ms, sizeof (int ) );
147+ zmq_client.setsockopt (ZMQ_RCVTIMEO , &_load_tree_timeout_ms, sizeof (int ) );
132148
133149 zmq_client.send (request, zmq::send_flags::none);
134150
@@ -187,13 +203,13 @@ bool SidepanelMonitor::getTreeFromServer()
187203
188204void SidepanelMonitor::on_Connect ()
189205{
190- if ( !_connected)
206+ if ( !_connected )
191207 {
192- QString address = ui->lineEdit ->text ();
208+ QString address = ui->lineEdit_address ->text ();
193209 if ( address.isEmpty () )
194210 {
195- address = ui->lineEdit ->placeholderText ();
196- ui->lineEdit ->setText (address);
211+ address = ui->lineEdit_address ->placeholderText ();
212+ ui->lineEdit_address ->setText (address);
197213 }
198214
199215 QString publisher_port = ui->lineEdit_publisher ->text ();
@@ -221,13 +237,16 @@ void SidepanelMonitor::on_Connect()
221237
222238 int timeout_ms = 1 ;
223239 _zmq_subscriber.setsockopt (ZMQ_SUBSCRIBE , " " , 0 );
224- _zmq_subscriber.setsockopt (ZMQ_RCVTIMEO ,&timeout_ms, sizeof (int ) );
240+ _zmq_subscriber.setsockopt (ZMQ_RCVTIMEO , &timeout_ms, sizeof (int ) );
225241
226242 if ( !getTreeFromServer () )
227243 {
228244 failed = true ;
229245 _connected = false ;
230246 }
247+ // After we try get a tree on connect, reset to the default timeout.
248+ // This is done so that we only use the increased autoconnect timeout once.
249+ this ->set_load_tree_timeout_ms (_load_tree_default_timeout_ms);
231250 }
232251 catch (zmq::error_t & err)
233252 {
@@ -241,9 +260,9 @@ void SidepanelMonitor::on_Connect()
241260 if ( !failed )
242261 {
243262 _connected = true ;
244- ui->lineEdit ->setDisabled (true );
263+ ui->lineEdit_address ->setDisabled (true );
245264 ui->lineEdit_publisher ->setDisabled (true );
246- _timer->start (20 );
265+ _timer->start (_timer_period_ms );
247266 connectionUpdate (true );
248267 }
249268 else {
@@ -255,7 +274,7 @@ void SidepanelMonitor::on_Connect()
255274 }
256275 else {
257276 _connected = false ;
258- ui->lineEdit ->setDisabled (false );
277+ ui->lineEdit_address ->setDisabled (false );
259278 ui->lineEdit_publisher ->setDisabled (false );
260279 _timer->stop ();
261280
0 commit comments