summaryrefslogblamecommitdiffstats
path: root/src/net/pvsClientConnection.h
blob: cfbf98eeb27ed3de3c3fea47609b32f97a9c8f26 (plain) (tree)


































































                                                                                                
/**
  *              PVSClientConnection
  *
  *	holds and maintains a Connection made from/to a PVSServerConnection (or derivate)
  * PVSClientConnections are created by the PVSListenServer if a PVSCLientConnection is accepted
  *
  */

#include "pvsMsg.h"

#include <QtNetwork/QSslSocket>


#ifndef _PVSCLIENTCONNECTION_H_
#define _PVSCLIENTCONNECTION_H_

class PVSListenServer;

class PVSClientConnection : public QObject
{
    Q_OBJECT

public:
    //C'Tor
    PVSClientConnection(PVSListenServer* server, QSslSocket* sock = NULL);
    // D'Tor
    ~PVSClientConnection();

    void closeConnection();
    bool isConnected()
    {
        return _socket != NULL && _socket->state() == QAbstractSocket::ConnectedState;
    }
    time_t lastData()
    {
    	return _lastData;
    }

    //void push_back_receive(PVSMsg newMsg);
    bool push_back_send(PVSMsg newMsg);
    QSslSocket* getSocket();

    int getID() { return _id; }
    void setID(unsigned int id);
    void setServerID(unsigned int id) { _serverId = id; }

    QString getAddress();
    void setUsername(QString username);
    QString getNameUser();
    void ping();

private Q_SLOTS:
    void sock_dataArrival();
    void sock_closed();
    void sock_error(QAbstractSocket::SocketError errcode);

private:
    QSslSocket *_socket;
    int _id;
    unsigned int _serverId;
    PVSMsg *_incomplete;
    PVSListenServer *_server;
    bool _toldDisconnect;
    time_t _lastData;
};

#endif