summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/kernel/qtipc/lackey/scripts/producer.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/kernel/qtipc/lackey/scripts/producer.js')
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/producer.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qtipc/lackey/scripts/producer.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/producer.js
new file mode 100644
index 0000000000..e02cd8b7bb
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/producer.js
@@ -0,0 +1,44 @@
+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); \ No newline at end of file