Ejemplo n.º 1
0
QString AmfReader::readString()
{
    char s[2];
    if(buff->read(s, 2) != 2)
        throw AmfInvalidFormatException();

    return readUtf8(AMF_DecodeInt16(s));
}
void cExternalTrackers::readyRead()
{
    QByteArray buffer;
    buffer.resize(m_Server.pendingDatagramSize());

    QHostAddress sender;
    quint16 senderPort;

    m_Server.readDatagram(buffer.data(), buffer.size(), &sender, &senderPort);

    unsigned char checkSum = buffer[buffer.size()-1];
    if (checkSum==simpleCheckSum(buffer,buffer.size()-1)){
        QDataStream stream(buffer);
        char prefix[EXTERNAL_TRACKER_FORMAT_PREFIX_SIZE+1]; //add zero for simple convert to string
        prefix[EXTERNAL_TRACKER_FORMAT_PREFIX_SIZE] = 0;
        stream.readRawData(prefix,EXTERNAL_TRACKER_FORMAT_PREFIX_SIZE);

        if (memcmp(prefix,EXTERNAL_TRACKER_FORMAT_PREFIX,EXTERNAL_TRACKER_FORMAT_PREFIX_SIZE)==0){
            int Version;
            stream.readRawData((char*)&Version,sizeof(int));
            if (Version==EXTERNAL_TRACKER_FORMAT_VERSION){
                QString CurrentState = readUtf8(stream);

                int AppCount;
                stream.readRawData((char*)&AppCount,sizeof(int));
                for (int i = 0; i<AppCount; i++){
                    QString AppName = readUtf8(stream);
                    addPair(AppName,CurrentState);
                }
            }
            else
                qWarning() << "Error reading external tracker. Incorrect format version " << Version << " only " << EXTERNAL_TRACKER_FORMAT_VERSION << " supported";
        }
        else
            qWarning() << "Error reading external tracker. Incorrect format prefix " << prefix;

    }
    else
        qWarning() << "incorrect external tracker checksum";
}
Ejemplo n.º 3
0
QString AmfReader::readAmf3String()
{
    auto size = readAmf3Int();
    bool ref = (size & 1) == 0;
    size >>= 1;

    if(ref)
        return readStringRef(size);

    if(size == 0)
        return QString();

    auto str = readUtf8(size);
    addStringRef(str);
    return str;
}