Changeset 5647 in ntrip for trunk/BNC/src


Ignore:
Timestamp:
Feb 23, 2014, 5:53:18 PM (10 years ago)
Author:
mervart
Message:
 
Location:
trunk/BNC/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bnccaster.cpp

    r5528 r5647  
    129129  }
    130130#endif
     131
     132  // Miscellaneous output port  // Georg
     133  // -------------------------
     134  _miscMount = settings.value("miscMount").toString();
     135  _miscPort  = settings.value("miscPort").toInt();
     136  if (!_miscMount.isEmpty() && _miscPort != 0) {
     137    _miscServer = new QTcpServer;
     138    if ( !_miscServer->listen(QHostAddress::Any, _miscPort) ) {
     139      emit newMessage("bncCaster: Cannot listen on Miscellaneous Output Port", true);
     140    }
     141    connect(_miscServer, SIGNAL(newConnection()), this, SLOT(slotNewMiscConnection()));
     142    _miscSockets = new QList<QTcpSocket*>;
     143  }
     144  else {
     145    _miscServer  = 0;
     146    _miscSockets = 0;
     147  }
    131148}
    132149
     
    157174  }
    158175#endif
     176  delete _miscServer;
     177  delete _miscSockets;
    159178}
    160179
     
    579598}
    580599
     600//      // Output into the Miscellaneous socket // Georg
     601//      // ------------------------------------
     602//      if (_miscSockets && _miscMount != "ALL") {
     603//        QMutableListIterator<QTcpSocket*> is(*_miscSockets);
     604//        while (is.hasNext()) {
     605//          QTcpSocket* sock = is.next();
     606//          if (sock->state() == QAbstractSocket::ConnectedState) {
     607//            if (myMiscWrite(sock, data, nBytes) != nBytes) {
     608//              delete sock;
     609//              is.remove();
     610//            }       
     611//          }       
     612//          else if (sock->state() != QAbstractSocket::ConnectingState) {
     613//            delete sock;
     614//            is.remove();
     615//          }       
     616//        }       
     617//      }
     618
     619
     620// New Connection // Georg
     621////////////////////////////////////////////////////////////////////////////
     622void bncCaster::slotNewMiscConnection() {
     623  _miscSockets->push_back( _miscServer->nextPendingConnection() );
     624  emit( newMessage(QString("New client connection on Miscellaneous Output Port: # %1")
     625                   .arg(_miscSockets->size()).toAscii(), true) );
     626}
     627
     628// Write buffer // Georg
     629////////////////////////////////////////////////////////////////////////////
     630int bncCaster::myMiscWrite(QTcpSocket* sock, const char* buf, int bufLen) {
     631  sock->write(buf, bufLen);
     632  for (int ii = 1; ii <= 10; ii++) {
     633    if (sock->waitForBytesWritten(10)) {  // wait 10 ms
     634      return bufLen;
     635    }
     636  }
     637  return -1;
     638}
     639
  • trunk/BNC/src/bnccaster.h

    r5528 r5647  
    5050   void slotNewObs(QByteArray staID, QList<t_obs> obsList);
    5151   void slotNewNMEAstr(QByteArray str);
     52   void slotNewMiscConnection();
    5253
    5354 signals:
     
    6667   void dumpEpochs(long minTime, long maxTime);
    6768   static int myWrite(QTcpSocket* sock, const char* buf, int bufLen);
     69   static int myMiscWrite(QTcpSocket* sock, const char* buf, int bufLen);
    6870   void reopenOutFile();
    6971
     
    8587   QMutex                   _mutex;
    8688   int                      _confInterval;
     89   QString                  _miscMount;
     90   int                      _miscPort;
     91   QTcpServer*              _miscServer;
     92   QList<QTcpSocket*>*      _miscSockets;
    8793#ifdef RTROVER_INTERFACE
    8894   t_bncRtrover*            _bncRtrover;
  • trunk/BNC/src/bncgetthread.cpp

    r5646 r5647  
    104104
    105105  bncSettings settings;
    106 
    107106  if (!settings.value("rawOutFile").toString().isEmpty()) {
    108107    _rawOutput = true;
     
    132131  _miscMount     = settings.value("miscMount").toString();
    133132  _decoder   = 0;
    134 
    135   // Miscellaneous output port  // Georg
    136   // -------------------------
    137   _miscPort = settings.value("miscPort").toInt();
    138   if (_miscPort != 0) {
    139     _miscServer = new QTcpServer;
    140     if ( !_miscServer->listen(QHostAddress::Any, _miscPort) ) {
    141       emit newMessage("bncgetthread: Cannot listen on Miscellaneous Output Port", true);
    142     }
    143     connect(_miscServer, SIGNAL(newConnection()), this, SLOT(slotNewMiscConnection()));
    144     _miscSockets = new QList<QTcpSocket*>;
    145   }
    146   else {
    147     _miscServer  = 0;
    148     _miscSockets = 0;
    149   }
    150133
    151134  // Serial Port
     
    400383  delete _serialPort;
    401384  delete _latencyChecker;
    402   delete _miscServer;
    403   delete _miscSockets;
    404385  emit getThreadFinished(_staID);
    405386}
     
    492473        _serialPort->write(data);
    493474      }
    494 
    495       // Output into the Miscellaneous socket // Georg
    496       // ------------------------------------
    497       if (_miscSockets && _miscMount != "ALL") {
    498         QMutableListIterator<QTcpSocket*> is(*_miscSockets);
    499         while (is.hasNext()) {
    500           QTcpSocket* sock = is.next();
    501           if (sock->state() == QAbstractSocket::ConnectedState) {
    502             if (myMiscWrite(sock, data, nBytes) != nBytes) {
    503               delete sock;
    504               is.remove();
    505             }       
    506           }       
    507           else if (sock->state() != QAbstractSocket::ConnectingState) {
    508             delete sock;
    509             is.remove();
    510           }       
    511         }       
    512       }
    513 
     475     
    514476      // Decode Data
    515477      // -----------
     
    709671}
    710672
    711 // New Connection // Georg
    712 ////////////////////////////////////////////////////////////////////////////
    713 void bncGetThread::slotNewMiscConnection() {
    714   _miscSockets->push_back( _miscServer->nextPendingConnection() );
    715   emit( newMessage(QString("New client connection on Miscellaneous Output Port: # %1")
    716                    .arg(_miscSockets->size()).toAscii(), true) );
    717 }
    718 
    719 // Write buffer // Georg
    720 ////////////////////////////////////////////////////////////////////////////
    721 int bncGetThread::myMiscWrite(QTcpSocket* sock, const char* buf, int bufLen) {
    722   sock->write(buf, bufLen);
    723   for (int ii = 1; ii <= 10; ii++) {
    724     if (sock->waitForBytesWritten(10)) {  // wait 10 ms
    725       return bufLen;
    726     }
    727   }
    728   return -1;
    729 }
    730 
    731673// RTCM scan output
    732674//////////////////////////////////////////////////////////////////////////////
     
    865807  }
    866808}
    867 
  • trunk/BNC/src/bncgetthread.h

    r5643 r5647  
    9292 private slots:
    9393   void slotSerialReadyRead();
    94    void slotNewMiscConnection();
    9594
    9695 private:
    97    static int myMiscWrite(QTcpSocket* sock, const char* buf, int bufLen);
    9896   enum t_serialNMEA {NO_NMEA, MANUAL_NMEA, AUTO_NMEA};
    9997   t_irc        initDecoder();
     
    117115   int                        _nextSleep;
    118116   int                        _iMount;
    119    int                        _miscPort;
    120117   bncRawFile*                _rawFile;
    121118   QextSerialPort*            _serialPort;
     
    129126   QMap<QString, long>        _prnLastEpo;
    130127   QMap<char, QVector<QString> > _rnxTypes;
    131    QTcpServer*                _miscServer;
    132    QList<QTcpSocket*>*        _miscSockets;
    133128};
    134129
Note: See TracChangeset for help on using the changeset viewer.