Changeset 2643 in ntrip for trunk/BNS/bnscaster.cpp


Ignore:
Timestamp:
Nov 4, 2010, 5:25:53 PM (13 years ago)
Author:
mervart
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNS/bnscaster.cpp

    r2636 r2643  
    9393// Start the Communication with NTRIP Caster
    9494////////////////////////////////////////////////////////////////////////////
    95 void t_bnscaster::open() {
     95void t_bnscaster::open(bool force) {
    9696
    9797  if (_mountpoint.isEmpty()) {
     
    9999  }
    100100
    101   if (_outSocket != 0 &&
    102       _outSocket->state() == QAbstractSocket::ConnectedState) {
    103     return;
     101  if (_outSocket != 0) {
     102    if ( _outSocket->state() == QAbstractSocket::HostLookupState ||
     103         _outSocket->state() == QAbstractSocket::ConnectingState ||
     104         _outSocket->state() == QAbstractSocket::ConnectedState ) {
     105      return;
     106    }
    104107  }
    105108
     
    110113    _sOpenTrial = 4;
    111114  }
    112   if (_outSocketOpenTime.isValid() &&
     115  if (!force &&
     116      _outSocketOpenTime.isValid() &&
    113117      _outSocketOpenTime.secsTo(QDateTime::currentDateTime()) < minDt) {
    114118    return;
     
    217221////////////////////////////////////////////////////////////////////////////
    218222void t_bnscaster::write(char* buffer, unsigned len) {
    219   if (_outSocket) {
    220     unsigned bytesWritten = _outSocket->write(buffer, len);
    221     _outSocket->flush();
    222     if (bytesWritten != len) {
    223       emit(newMessage("Broadcaster: cannot write to socket, closing"));
    224       delete _outSocket;
    225       _outSocket = 0;
     223  for (int iTrial = 1; iTrial <= 2; ++iTrial) {
     224    if (_outSocket) {
     225      unsigned bytesWritten = _outSocket->write(buffer, len);
     226      if (bytesWritten == len) {
     227        _outSocket->flush();
     228        break;
     229      }
     230      else {
     231        emit(newMessage("Broadcaster: cannot write to socket, closing"));
     232        delete _outSocket;
     233        _outSocket = 0;
     234        open(true);
     235      }
    226236    }
    227237  }
Note: See TracChangeset for help on using the changeset viewer.