1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
//
// C++ Implementation: simplelocalsocket
//
// Description:
//
//
// Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de>, (C) 2006-2018
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "simplelocalsocket.h"
#include "sharetray.h"
#include <QLocalSocket>
#include <QTimer>
SimpleLocalSocket::SimpleLocalSocket(ShareTray* obj, QLocalSocket* soc,
QObject *parent)
: QObject(parent)
{
socket=soc;
trayApp=obj;
if ( socket )
{
connect ( socket,SIGNAL ( readyRead() ),this,
SLOT ( slotReadFromSocket() ) );
}
}
SimpleLocalSocket::~SimpleLocalSocket()
{
if (socket && trayApp->acceptConnections())
{
socket->close();
delete socket;
}
}
void SimpleLocalSocket::slotReadFromSocket()
{
char buffer[512];
int read=socket->read ( buffer,511 );
if ( read<=0 )
{
return;
}
buffer[read]=0;
QString answer=trayApp->getSocketAnswer(buffer);
if (!socket)
return;
if (socket->isValid() &&
socket->state()==QLocalSocket::ConnectedState&&
socket->openMode()!=QIODevice::NotOpen)
{
socket->write(answer.toLatin1().data(),
answer.toLatin1().length());
QTimer::singleShot ( 10000, this, SLOT ( closeSocket() ) );
}
}
void SimpleLocalSocket::closeSocket()
{
trayApp->closeSocket(this);
}
|