tests/auto/qtipc/lackey/scripts/producer.js
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 11 Jun 2010 14:24:45 +0300
changeset 25 e24348a560a6
parent 18 2f34d5167611
permissions -rw-r--r--
Revision: 201021 Kit: 2010123

function QVERIFY(x, debugInfo) {
    if (!(x)) {
        print(debugInfo);
        throw(debugInfo);
    }
}

var producer = new ScriptSharedMemory;
producer.setKey("market");

var size = 1024;
if (!producer.create(size)) {
    QVERIFY(producer.error() == 4, "create");
    QVERIFY(producer.attach());
}
//print ("producer created and attached");

QVERIFY(producer.lock());
producer.set(0, 'Q');
QVERIFY(producer.unlock());

var i = 0;
while(i < 5) {
    QVERIFY(producer.lock(), "lock");
    if (producer.get(0) == 'Q') {
        QVERIFY(producer.unlock(), "unlock");
        producer.sleep(1);
        continue;
    }
    //print("producer: " + i);
    ++i;
    producer.set(0, 'Q');
    QVERIFY(producer.unlock(), "unlock");
    producer.sleep(1);
}
QVERIFY(producer.lock());
producer.set(0, 'E');
QVERIFY(producer.unlock());

//print ("producer done");

// Sleep for a bit to let all consumers start, otherwise they will get stuck in the attach loop,
// because at least in Symbian the shared memory will be destroyed if there are no active handles to it.
producer.sleep(3000);