aboutsummaryrefslogtreecommitdiff
path: root/c++-qt/tests/echo/mainwnd.cpp
blob: 13c93a1cf9db6f868e9daac3bed81ca3b989c189 (plain)
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
#include "mainwnd.h"

MainWnd::MainWnd()
{
	pSrv = new QTcpServer( this );
	connect( pSrv, SIGNAL(newConnection()), this, SLOT(newConnection()));
	pSrv->listen( QHostAddress::Any, 7317 );
}

MainWnd::~MainWnd()
{
}

void MainWnd::newConnection()
{
	while( pSrv->hasPendingConnections() )
	{
		QTcpSocket *pSock = pSrv->nextPendingConnection();
		Gats::GatsStream *pGats = new Gats::GatsStream( *pSock );
		connect( pSock, SIGNAL(readyRead()), pGats, SLOT(readObject()) );
		connect( pGats, SIGNAL(objectRead( Gats::Object * )),
			this, SLOT(objectRead( Gats::Object * )));
	}
}

void MainWnd::objectRead( Gats::Object *pObj )
{
	((Gats::GatsStream *)sender())->writeObject( pObj );

	Gats::Object *pCopy = pObj->clone();
	delete pObj;

	((Gats::GatsStream *)sender())->writeObject( pCopy );

	delete pCopy;
}