00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <QStringList>
00029
00030 #include "stream.h"
00031
00032
00033
00034 Stream::Stream()
00035 {
00036 _streamId = 0;
00037 _status = Unknown;
00038 _circuitId = 0;
00039 _target = QString();
00040 }
00041
00042
00043 Stream::Stream(quint64 streamId, Status status, quint64 circuitId, QString target)
00044 {
00045 _streamId = streamId;
00046 _status = status;
00047 _circuitId = circuitId;
00048 _target = target;
00049 }
00050
00051
00052
00053
00054
00055
00056 Stream
00057 Stream::fromString(QString stream)
00058 {
00059 QStringList parts = stream.split(" ");
00060 if (parts.size() >= 4) {
00061
00062 quint64 streamId = (quint64)parts.at(0).toULongLong();
00063
00064 Stream::Status status = Stream::toStatus(parts.at(1));
00065
00066 quint64 circId = (quint64)parts.at(2).toULongLong();
00067
00068 QString target = parts.at(3);
00069
00070 return Stream(streamId, status, circId, target);
00071 }
00072 return Stream();
00073 }
00074
00075
00076 Stream::Status
00077 Stream::toStatus(QString strStatus)
00078 {
00079 Status status;
00080 strStatus = strStatus.toUpper();
00081 if (strStatus == "NEW") {
00082 status = New;
00083 } else if (strStatus == "NEWRESOLVE") {
00084 status = NewResolve;
00085 } else if (strStatus == "SENTCONNECT") {
00086 status = SentConnect;
00087 } else if (strStatus == "SENTRESOLVE") {
00088 status = SentResolve;
00089 } else if (strStatus == "SUCCEEDED") {
00090 status = Succeeded;
00091 } else if (strStatus == "FAILED") {
00092 status = Failed;
00093 } else if (strStatus == "CLOSED") {
00094 status = Closed;
00095 } else if (strStatus == "DETACHED") {
00096 status = Detached;
00097 } else {
00098 status = Unknown;
00099 }
00100 return status;
00101 }
00102
00103
00104
00105 QString
00106 Stream::statusString()
00107 {
00108 QString status;
00109 switch (_status) {
00110 case New: status = tr("New"); break;
00111 case NewResolve:
00112 case SentResolve: status = tr("Resolving"); break;
00113 case SentConnect: status = tr("Connecting"); break;
00114 case Succeeded: status = tr("Open"); break;
00115 case Failed: status = tr("Failed"); break;
00116 case Closed: status = tr("Closed"); break;
00117 case Detached: status = tr("Retrying"); break;
00118 default: status = tr("Unknown"); break;
00119 }
00120 return status;
00121 }
00122
00123
00124 bool
00125 Stream::isEmpty()
00126 {
00127 return (!_streamId && !_circuitId &&
00128 (_status == Unknown) && _target.isEmpty());
00129 }
00130