Changeset 1222 in ntrip for trunk/BNC/bnccaster.cpp


Ignore:
Timestamp:
Nov 22, 2008, 2:09:45 PM (15 years ago)
Author:
mervart
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bnccaster.cpp

    r1200 r1222  
    8787  }
    8888
     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
    89101  _epochs = new QMultiMap<long, p_obs>;
    90102
     
    111123  delete _server;
    112124  delete _sockets;
     125  delete _uServer;
     126  delete _uSockets;
    113127  if (_epochs) {
    114128    QListIterator<p_obs> it(_epochs->values());
     
    136150  obs->_o.StatID[sizeof(obs->_o.StatID)-1] = '\0';
    137151       
     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
    138182  // First time, set the _lastDumpSec immediately
    139183  // --------------------------------------------
     
    175219  emit( newMessage(QString("New Connection # %1")
    176220                   .arg(_sockets->size()).toAscii()) );
     221}
     222
     223void bncCaster::slotNewUConnection() {
     224  _uSockets->push_back( _uServer->nextPendingConnection() );
     225  emit( newMessage(QString("New Connection (usync) # %1")
     226                   .arg(_uSockets->size()).toAscii()) );
    177227}
    178228
     
    273323          while (is.hasNext()) {
    274324            QTcpSocket* sock = is.next();
    275             int myFlag = 0;
    276325            if (sock->state() == QAbstractSocket::ConnectedState) {
    277326              bool ok = true;
    278327              if (first) {
    279328                if (myWrite(sock, begEpoch, begEpochNBytes) != begEpochNBytes) {
    280                   myFlag = 1;
    281329                  ok = false;
    282330                }
     
    284332              int numBytes = sizeof(obs->_o);
    285333              if (myWrite(sock, (const char*)(&obs->_o), numBytes) != numBytes) {
    286                 myFlag = 2;
    287334                ok = false;
    288335              }
    289336              if (!it.hasNext()) {
    290337                if (myWrite(sock, endEpoch, endEpochNBytes) != endEpochNBytes) {
    291                   myFlag = 3;
    292338                  ok = false;
    293339                }
Note: See TracChangeset for help on using the changeset viewer.