Changeset 1222 in ntrip for trunk/BNC/bnccaster.cpp
- Timestamp:
- Nov 22, 2008, 2:09:45 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/bnccaster.cpp
r1200 r1222 87 87 } 88 88 89 int uPort = settings.value("outUPort").toInt(); 90 if (uPort != 0) { 91 _uServer = new QTcpServer; 92 _uServer->listen(QHostAddress::Any, uPort); 93 connect(_uServer, SIGNAL(newConnection()), this, SLOT(slotNewUConnection())); 94 _uSockets = new QList<QTcpSocket*>; 95 } 96 else { 97 _uServer = 0; 98 _uSockets = 0; 99 } 100 89 101 _epochs = new QMultiMap<long, p_obs>; 90 102 … … 111 123 delete _server; 112 124 delete _sockets; 125 delete _uServer; 126 delete _uSockets; 113 127 if (_epochs) { 114 128 QListIterator<p_obs> it(_epochs->values()); … … 136 150 obs->_o.StatID[sizeof(obs->_o.StatID)-1] = '\0'; 137 151 152 const char begObs[] = "BEGOBS"; 153 const int begObsNBytes = sizeof(begObs) - 1; 154 155 // Output into the socket 156 // ---------------------- 157 if (_uSockets) { 158 QMutableListIterator<QTcpSocket*> is(*_uSockets); 159 while (is.hasNext()) { 160 QTcpSocket* sock = is.next(); 161 if (sock->state() == QAbstractSocket::ConnectedState) { 162 bool ok = true; 163 if (myWrite(sock, begObs, begObsNBytes) != begObsNBytes) { 164 ok = false; 165 } 166 int numBytes = sizeof(obs->_o); 167 if (myWrite(sock, (const char*)(&obs->_o), numBytes) != numBytes) { 168 ok = false; 169 } 170 if (!ok) { 171 delete sock; 172 is.remove(); 173 } 174 } 175 else if (sock->state() != QAbstractSocket::ConnectingState) { 176 delete sock; 177 is.remove(); 178 } 179 } 180 } 181 138 182 // First time, set the _lastDumpSec immediately 139 183 // -------------------------------------------- … … 175 219 emit( newMessage(QString("New Connection # %1") 176 220 .arg(_sockets->size()).toAscii()) ); 221 } 222 223 void bncCaster::slotNewUConnection() { 224 _uSockets->push_back( _uServer->nextPendingConnection() ); 225 emit( newMessage(QString("New Connection (usync) # %1") 226 .arg(_uSockets->size()).toAscii()) ); 177 227 } 178 228 … … 273 323 while (is.hasNext()) { 274 324 QTcpSocket* sock = is.next(); 275 int myFlag = 0;276 325 if (sock->state() == QAbstractSocket::ConnectedState) { 277 326 bool ok = true; 278 327 if (first) { 279 328 if (myWrite(sock, begEpoch, begEpochNBytes) != begEpochNBytes) { 280 myFlag = 1;281 329 ok = false; 282 330 } … … 284 332 int numBytes = sizeof(obs->_o); 285 333 if (myWrite(sock, (const char*)(&obs->_o), numBytes) != numBytes) { 286 myFlag = 2;287 334 ok = false; 288 335 } 289 336 if (!it.hasNext()) { 290 337 if (myWrite(sock, endEpoch, endEpochNBytes) != endEpochNBytes) { 291 myFlag = 3;292 338 ok = false; 293 339 }
Note:
See TracChangeset
for help on using the changeset viewer.