00001 00009 00010 00011 #ifndef SRCP_SOCKET_H 00012 #define SRCP_SOCKET_H 00013 00014 #include "engine.h" 00015 #include "rail.h" 00016 00017 #include <QObject> 00018 #include <QThread> 00019 #include <QTcpSocket> 00020 00021 class SrcpSocket ; 00022 00027 class SrcpThread : public QThread 00028 { 00029 Q_OBJECT 00030 00031 public : 00032 00035 SrcpThread( QObject* parent = 0 ) ; 00036 00038 ~SrcpThread() ; 00039 00040 public slots : 00041 00043 void run() ; 00044 00047 void stop() ; 00048 00049 signals : 00050 00052 void infoReceived( QString ) ; 00053 00054 private : 00055 00057 SrcpSocket *_infoSocket ; 00058 00060 bool _stopFlag ; 00061 } ; 00062 00063 00068 class SrcpSocket : public QTcpSocket 00069 { 00070 00071 Q_OBJECT 00072 00073 public : 00074 00078 SrcpSocket( const QString &type = "", QObject* parent = 0 ) ; 00079 00081 ~SrcpSocket() ; 00082 00085 QString type() ; 00086 00087 signals : 00088 00090 void errorOccured( QString ) ; 00091 00093 void infoReceived( QString ) ; 00094 00095 public slots : 00096 00098 void start() ; 00099 00101 void threadSafeDisconnectFromHost() ; 00102 00105 bool sendMsg( QString msg ) ; 00106 00109 QString srcpReadLine() ; 00110 00111 private slots : 00112 00113 private : 00114 00116 SrcpThread *_internThread ; 00117 00119 QString _type ; 00120 00121 // handleSocketError( QAbstractSocket::SocketError socketError ) // TODO implement it 00122 } ; 00123 00124 #endif // SRCP_SOCKET_H