示例#1
0
NetServer::NetServer(uint16_t port,QObject *parent)
  : QObject(parent)
{
  //
  // TCP Server
  //
  net_tcp_server=new QTcpServer(this);
  connect(net_tcp_server,SIGNAL(newConnection()),
	  this,SLOT(newConnectionData()));
  if(!net_tcp_server->listen(QHostAddress::Any,port)) {
    syslog(LOG_WARNING,"unable to bind LWCP port %u",port);
  }

  //
  // Connection Mappers
  //
  net_tcp_ready_mapper=new QSignalMapper(this);
  connect(net_tcp_ready_mapper,SIGNAL(mapped(int)),
	  this,SLOT(readyReadData(int)));

  net_tcp_discon_mapper=new QSignalMapper(this);
  connect(net_tcp_discon_mapper,SIGNAL(mapped(int)),
	  this,SLOT(disconnectedData(int)));

  //
  // Garbage Collection Timer
  //
  net_garbage_timer=new QTimer(this);
  net_garbage_timer->setSingleShot(true);
  connect(net_garbage_timer,SIGNAL(timeout()),this,SLOT(garbageData()));
}
示例#2
0
void OctreeTests::modelItemTests() {
#if 0 // TODO - repair/replace these
    bool verbose = true;

    //verbose = true;
    EntityTreeElementExtraEncodeData modelTreeElementExtraEncodeData;
    int testsTaken = 0;
    int testsPassed = 0;
    int testsFailed = 0;

    if (verbose) {
        qDebug() << "******************************************************************************************";
    }
    
    qDebug() << "OctreeTests::modelItemTests()";

    EncodeBitstreamParams params;
    OctreePacketData packetData;
    EntityItem entityItem;
    
    entityItem.setID(1042);
    entityItem.setModelURL("http://foo.com/foo.fbx");

    bool appendResult = entityItem.appendEntityData(&packetData, params, &modelTreeElementExtraEncodeData);
    int bytesWritten = packetData.getUncompressedSize();
    if (verbose) {
        qDebug() << "Test 1: bytesRead == bytesWritten ...";
        qDebug() << "appendResult=" << appendResult;
        qDebug() << "bytesWritten=" << bytesWritten;
    }

    {
        ReadBitstreamToTreeParams args;
        EntityItem modelItemFromBuffer;
        const unsigned char* data = packetData.getUncompressedData();
        int bytesLeftToRead = packetData.getUncompressedSize();
    
        int bytesRead =  modelItemFromBuffer.readEntityDataFromBuffer(data, bytesLeftToRead, args);
        if (verbose) {
            qDebug() << "bytesRead=" << bytesRead;
            qDebug() << "modelItemFromBuffer.getID()=" << modelItemFromBuffer.getID();
            qDebug() << "modelItemFromBuffer.getModelURL()=" << modelItemFromBuffer.getModelURL();
        }

        QCOMPARE(bytesRead, bytesWritten);

        if (verbose) {
            qDebug() << "Test 2: modelItemFromBuffer.getModelURL() == 'http://foo.com/foo.fbx'";
        }
    
        QCOMPARE(modelItemFromBuffer.getModelURL(), "http://foo.com/foo.fbx");
    }
    
    // TEST 3:
    // Reset the packet, fill it with data so that EntityItem header won't fit, and verify that we don't let it fit
    {
        packetData.reset();
        int remainingSpace = 10;
        int almostFullOfData = MAX_OCTREE_UNCOMRESSED_PACKET_SIZE - remainingSpace;
        QByteArray garbageData(almostFullOfData, 0);
        packetData.appendValue(garbageData);

        appendResult = entityItem.appendEntityData(&packetData, params, &modelTreeElementExtraEncodeData);
        bytesWritten = packetData.getUncompressedSize() - almostFullOfData;
        if (verbose) {
            qDebug() << "Test 3: attempt to appendEntityData in nearly full packetData ...";
            qDebug() << "appendResult=" << appendResult;
            qDebug() << "bytesWritten=" << bytesWritten;
        }
        QCOMPARE(appendResult, false);
        QCOMPARE(bytesWritten, 0);
    }
    
    // TEST 4:
    // Reset the packet, fill it with data so that some of EntityItem won't fit, and verify that we write what can fit
    {
        packetData.reset();
        int remainingSpace = 50;
        int almostFullOfData = MAX_OCTREE_UNCOMRESSED_PACKET_SIZE - remainingSpace;
        QByteArray garbageData(almostFullOfData, 0);
        packetData.appendValue(garbageData);

        appendResult = entityItem.appendEntityData(&packetData, params, &modelTreeElementExtraEncodeData);
        bytesWritten = packetData.getUncompressedSize() - almostFullOfData;
        if (verbose) {
            qDebug() << "Test 4: attempt to appendEntityData in nearly full packetData which some should fit ...";
            qDebug() << "appendResult=" << appendResult;
            qDebug() << "bytesWritten=" << bytesWritten;
        }
        
        QCOMPARE(appendResult, true);

        ReadBitstreamToTreeParams args;
        EntityItem modelItemFromBuffer;
        const unsigned char* data = packetData.getUncompressedData() + almostFullOfData;
        int bytesLeftToRead = packetData.getUncompressedSize() - almostFullOfData;
    
        int bytesRead =  modelItemFromBuffer.readEntityDataFromBuffer(data, bytesLeftToRead, args);
        if (verbose) {
            qDebug() << "Test 5: partial EntityItem written ... bytesRead == bytesWritten...";
            qDebug() << "bytesRead=" << bytesRead;
            qDebug() << "modelItemFromBuffer.getID()=" << modelItemFromBuffer.getID();
            qDebug() << "modelItemFromBuffer.getModelURL()=" << modelItemFromBuffer.getModelURL();
        }

        QCOMPARE(bytesRead, bytesWritten);

        if (verbose) {
            qDebug() << "Test 6: partial EntityItem written ... getModelURL() NOT SET ...";
        }
    
        QCOMPARE(modelItemFromBuffer.getModelURL(), "");
    }
    
    if (verbose) {
        qDebug() << "******************************************************************************************";
    }
    
    QCOMPARE(testsPassed, testsTaken);
    if (verbose) {
        qDebug() << "******************************************************************************************";
    }
    
#endif 
}