Changeset 1357 in ntrip for trunk/BNC/bncsocket.cpp


Ignore:
Timestamp:
Dec 27, 2008, 4:03:38 PM (15 years ago)
Author:
mervart
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bncsocket.cpp

    r1356 r1357  
    3232               app, SLOT(slotMessage(const QByteArray,bool)));
    3333  _socket = 0;
    34 #if QT_VERSION >= 0x040400
    35   _manager = 0;
    36   _reply   = 0;
    37 #endif
     34  _http   = 0;
    3835}
    3936
     
    4138////////////////////////////////////////////////////////////////////////////
    4239bncSocket::~bncSocket() {
     40  cout << "~bncSocket" << endl;
    4341  delete _socket;
    44 #if QT_VERSION >= 0x040400
    45   _reply->deleteLater();
    46   _manager->deleteLater();
    47 #endif
     42  delete _http;
    4843}
    4944
     
    5247void bncSocket::connectToHost(const QString &hostName, quint16 port,
    5348                              QIODevice::OpenMode mode) {
    54 #if QT_VERSION >= 0x040400
    55   if (_reply) {
    56   }
    57   else
    58 #endif
    5949  if (_socket) {
    6050    _socket->connectToHost(hostName, port, mode);
     
    6555////////////////////////////////////////////////////////////////////////////
    6656bool bncSocket::waitForConnected(int msecs) {
    67 #if QT_VERSION >= 0x040400
    68   if (_reply) {
    69     return true;
    70   }
    71   else
    72 #endif
    7357  if (_socket) {
    7458    return _socket->waitForConnected(msecs);
     
    8266////////////////////////////////////////////////////////////////////////////
    8367QAbstractSocket::SocketState bncSocket::state() const {
    84 #if QT_VERSION >= 0x040400
    85   if (_reply) {
    86     return QAbstractSocket::ConnectedState;
    87   }
    88   else
    89 #endif
    9068  if (_socket) {
    9169    return _socket->state();
     
    9977////////////////////////////////////////////////////////////////////////////
    10078void bncSocket::close() {
    101 #if QT_VERSION >= 0x040400
    102   if (_reply) {
    103     _reply->close();
    104   }
    105   else
    106 #endif
    10779  if (_socket) {
    10880    _socket->close();
     
    11385////////////////////////////////////////////////////////////////////////////
    11486qint64 bncSocket::bytesAvailable() const {
    115 #if QT_VERSION >= 0x040400
    116   if (_reply) {
    117     return _reply->bytesAvailable();
    118   }
    119   else
    120 #endif
    12187  if (_socket) {
    12288    return _socket->bytesAvailable();
     
    13096////////////////////////////////////////////////////////////////////////////
    13197bool bncSocket::canReadLine() const {
    132 #if QT_VERSION >= 0x040400
    133   if (_reply) {
    134     return _reply->canReadLine();
    135   }
    136   else
    137 #endif
    13898  if (_socket) {
    13999    return _socket->canReadLine();
     
    147107////////////////////////////////////////////////////////////////////////////
    148108QByteArray bncSocket::readLine(qint64 maxlen) {
    149 #if QT_VERSION >= 0x040400
    150   if (_reply) {
    151     return _reply->readLine(maxlen);
    152   }
    153   else
    154 #endif
    155109  if (_socket) {
    156110    return _socket->readLine(maxlen);
     
    164118////////////////////////////////////////////////////////////////////////////
    165119bool bncSocket::waitForReadyRead(int msecs) {
    166 #if QT_VERSION >= 0x040400
    167   if (_reply) {
    168     return _reply->waitForReadyRead(msecs);
    169   }
    170   else
    171 #endif
    172120  if (_socket) {
    173121    return _socket->waitForReadyRead(msecs);
     
    181129////////////////////////////////////////////////////////////////////////////
    182130qint64 bncSocket::read(char* data, qint64 maxlen) {
    183 #if QT_VERSION >= 0x040400
    184   if (_reply) {
    185     return _reply->read(data, maxlen);
    186   }
    187   else
    188 #endif
    189131  if (_socket) {
    190132    return _socket->read(data, maxlen);
     
    198140////////////////////////////////////////////////////////////////////////////
    199141qint64 bncSocket::write(const char* data, qint64 len) {
    200 #if QT_VERSION >= 0x040400
    201   if (_reply) {
    202     return -1;
    203   }
    204   else
    205 #endif
    206142  if (_socket) {
    207143    return _socket->write(data, len);
     
    215151////////////////////////////////////////////////////////////////////////////
    216152bool bncSocket::waitForBytesWritten(int msecs) {
    217 #if QT_VERSION >= 0x040400
    218   if (_reply) {
    219     return _reply->waitForBytesWritten(msecs);
    220   }
    221   else
    222 #endif
    223153  if (_socket) {
    224154    return _socket->waitForBytesWritten(msecs);
     
    361291//
    362292////////////////////////////////////////////////////////////////////////////
    363 #if QT_VERSION >= 0x040400
    364 void bncSocket::slotReplyFinished() {
    365   cout << "slotReplyFinished" << endl;
     293void bncSocket::slotRequestFinished(int id, bool error) {
     294  cout << "slotRequestFinished " << id << " " << error << endl;
    366295  this->deleteLater();
    367296}
    368 #endif
    369 
    370 //
    371 ////////////////////////////////////////////////////////////////////////////
    372 #if QT_VERSION >= 0x040400
    373 void bncSocket::slotReadyRead() {
     297
     298//
     299////////////////////////////////////////////////////////////////////////////
     300void bncSocket::slotReadyRead(const QHttpResponseHeader&) {
    374301  cout << "slotReadyRead" << endl;
    375302}
    376 #endif
    377 
    378 //
    379 ////////////////////////////////////////////////////////////////////////////
    380 #if QT_VERSION >= 0x040400
    381 void bncSocket::slotError(QNetworkReply::NetworkError) {
    382   cout << "slotError " << _reply->error() << endl
    383        << _reply->errorString().toAscii().data() << endl;
    384 }
    385 #endif
    386 
    387 //
    388 ////////////////////////////////////////////////////////////////////////////
    389 #if QT_VERSION >= 0x040400
     303
     304//
     305////////////////////////////////////////////////////////////////////////////
    390306void bncSocket::slotSslErrors(const QList<QSslError>&) {
    391307  cout << "slotSslError" << endl;
    392308}
    393 #endif
     309
     310//
     311////////////////////////////////////////////////////////////////////////////
     312void bncSocket::slotDone(bool error) {
     313  cout << "slotDone " << error << endl;
     314}
    394315
    395316// Connect to Caster NTRIP Version 2
     
    398319                         const QByteArray& longitude, const QByteArray& nmea,
    399320                         int timeOut, QString& msg) {
    400 #if QT_VERSION < 0x040400
    401   emit newMessage("NTRIP v2 requires Qt Version 4.4 or higher", "true");
    402   return failure;
    403 #else
    404   // Network Access Manager
    405   // ----------------------
    406   if (_manager == 0) {
    407     _manager = new QNetworkAccessManager(this);
    408   }
    409   else {
    410     return failure;
    411   }
     321
     322  delete _socket;
     323  _socket = new QTcpSocket();
     324
     325  delete _http;
     326  _http = new QHttp();
     327 
     328  _http->setSocket(_socket);
    412329
    413330  // Network Request
    414331  // ---------------
    415   QNetworkRequest request;
    416   request.setUrl(url);
    417   request.setRawHeader("Host"         , url.host().toAscii());
    418   request.setRawHeader("Ntrip-Version", "NTRIP/2.0");
    419   request.setRawHeader("User-Agent"   , "NTRIP BNC/1.7");
     332  QHttpRequestHeader request("GET", url.path());
     333  request.addValue("Host"         , url.host().toAscii());
     334  request.addValue("Ntrip-Version", "NTRIP/2.0");
     335  request.addValue("User-Agent"   , "NTRIP BNC/1.7");
    420336  if (!url.userName().isEmpty()) {
    421     request.setRawHeader("Authorization", "Basic " +
     337    request.addValue("Authorization", "Basic " +
    422338                 (url.userName() + ":" + url.password()).toAscii().toBase64());
    423339  }
    424   request.setRawHeader("Connection"   , "close");
    425 
    426   _reply = _manager->get(request);
    427 
    428   connect(_reply, SIGNAL(finished()), this, SLOT(slotReplyFinished()));
    429   connect(_reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
    430   connect(_reply, SIGNAL(error(QNetworkReply::NetworkError)),
    431           this, SLOT(slotError(QNetworkReply::NetworkError)));
    432   connect(_reply, SIGNAL(sslErrors(const QList<QSslError>&)),
     340  request.addValue("Connection"   , "close");
     341
     342
     343  connect(_http, SIGNAL(done(bool)), this, SLOT(slotDone(bool)));
     344  connect(_http, SIGNAL(requestFinished(int, bool)),
     345          this, SLOT(slotRequestFinished(int, bool)));
     346  connect(_http, SIGNAL(readyRead(const QHttpResponseHeader&)),
     347          this, SLOT(slotReadyRead(const QHttpResponseHeader&)));
     348  connect(_http, SIGNAL(sslErrors(const QList<QSslError>&)),
    433349          this, SLOT(slotSslErrors(const QList<QSslError>&)));
    434350
    435351  return success;
    436 #endif
    437 }
     352}
Note: See TracChangeset for help on using the changeset viewer.