#include "serversecurity37message.h"
#include <QIODevice>
ServerSecurity37Message::ServerSecurity37Message() : ServerMessageBase(), m_hasError(false)
{
}

bool ServerSecurity37Message::loadMessage( QIODevice *device )
{
    quint8 securityTypeCount = readUint8(device);
    if( securityTypeCount > 0 )
    {
        m_hasError = false;
        for( quint8 idx = 0; idx < securityTypeCount; idx++ )
        {
            m_securityTypes << (ClientGlobals::AuthType)readUint8(device);
        }
    }
    else
    {
        m_hasError = true;
        quint32 errLen = readUint32(device);
        QByteArray errorStringBuffer(errLen, '\0');
        readBytes(device, errorStringBuffer.data(), errLen);
        m_errorString = errorStringBuffer;
    }
    return true;

}

bool ServerSecurity37Message::hasError() const
{
    return m_hasError;
}

QString ServerSecurity37Message::errorString() const
{
    return m_errorString;
}

QList<ClientGlobals::AuthType> ServerSecurity37Message::securityTypes() const
{
    return m_securityTypes;
}

QDebug operator <<( QDebug in, ServerSecurity37Message & message )
{
    if( message.hasError() )
    {
        in << QString("Server security message. Error: %1").arg(message.errorString());
    }
    else
    {
        in << QString("Server security message. Types:") << message.securityTypes();
    }
    return in;
}

