#ifndef SECURITYMESSAGES_H
#define SECURITYMESSAGES_H

#include "rfbio.h"
#include <QList>
#include <QString>
enum SecurityType {
                    SecurityTypeInvalid = 0,
                    SecurityTypeNone = 1,
                    SecurityTypeVNCAuth = 2
                  };

struct SecurityResult
{
    SecurityResult();
    int result;
    QString reason;
};

class SecurityTypesMessageIo : public RFBIo
{
public:
    SecurityTypesMessageIo(QIODevice *device );

    QList<SecurityType> readSecurityTypes();
    void writeSecurityTypes( QList<SecurityType> &msg );
};

class SecurityTypeMessageResponseIo : public RFBIo
{
public:
    SecurityTypeMessageResponseIo(QIODevice *device );

    SecurityType readSecurityTypeResponse();
    void writeSecurityTypeResponse( SecurityType &msg );
};

class SecurityTypeErrorMessageIo : public RFBIo
{
public:
    SecurityTypeErrorMessageIo(QIODevice *device );

    QString readSecurityTypeError();
    void writeSecurityTypeError( const QString &msg );
};

class SecurityResultMessageIo : public RFBIo
{
public:
    SecurityResultMessageIo(QIODevice *device );

    SecurityResult readSecurityResult();
    void writeSecurityResult( const SecurityResult &msg );
};

#endif // SECURITYMESSAGES_H

