aboutsummaryrefslogtreecommitdiff
path: root/c++-qt/tests/echo/mainwnd.cpp
blob: 3995720e9f144a7a09ce5aeac76522f35f5268d4 (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
37
38
39
40
41
42
43
/*
 * Copyright (C) 2007-2012 Xagasoft, All rights reserved.
 *
 * This file is part of the libgats library and is released under the
 * terms of the license contained in the file LICENSE.
 */

#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;
}