Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not getting frameEvents in Asynchronous mode #51

Open
andrele opened this issue Dec 5, 2013 · 1 comment
Open

Not getting frameEvents in Asynchronous mode #51

andrele opened this issue Dec 5, 2013 · 1 comment

Comments

@andrele
Copy link

andrele commented Dec 5, 2013

On Processing 2.0.3:

  • Used the mpeTest sketch
  • Moved dataEvents to its own method
  • Added <asynchronous>true</asynchronous> and <asynchreceive>true</asynchreceive> to mpe.xml
  • Started sketch and server and Processing reports:
MPE CLIENT VERSION 2.0.2
Client: Starting!
Client: Connected to server!
Client: Sending: A|0|true
  • Server reports:
$ java -jar mpeServer-2.0.2.jar 
MPE SERVER VERSION: 2.0.2
MPEServer: framerate = 30, screens = 1, waitForAll = false, verbose = false
Starting server: Andres-rMacBook-Pro.local/10.37.129.2  9002
/127.0.0.1:57056 connected.
Connecting asynch client 0 receiver: false

The sketch frame stays blank, and nothing in frameEvent is being called. Works fine in synchronous mode.

image

@sbxjld2
Copy link

sbxjld2 commented Jan 1, 2018

I have most than probably the same issue with processing 3.3.6 implementing a async communication between a client (command center) and a server (rendering) application

server is started :

MPE server started
MPE SERVER VERSION: 2.0.3
MPEServer: framerate = 30, screens = 2, waitForAll = true, verbose = true
Starting server: sbxjld10/192.168.0.52 9002

The first application connects to the server :

/127.0.0.1:54411 connected.
Raw receive: A|999|true
Connecting asynch client 999 receiver: false

Note that, while the raw message says client 999 has ASYNC set to true, the server says in the message that async is false.
the same happens to the other application that is connecting

/127.0.0.1:54413 connected.
Raw receive: A|1555|true
Connecting asynch client 1555 receiver: false
Adding message to next frameEvent: 1555,R=73

BTW, the two XML files have both two async flags set to true

<settings>
	<id>1555</id>
	<server>
		<ip>localhost</ip>
		<port>9002</port> 
	</server>
	<asynchronous>true</asynchronous>
	<asynchreceive>true</asynchreceive>
	<verbose>true</verbose>
</settings>

the problem is possibly due to coding at line 76 in connection.java :

While there are 3 tokens in this message (see raw data: A|1555|true), the code examines the boolean value found in message only if there are more than 3 element (tokens.length > 3)
In the code below, it examines tokens[3], while it should, IMO, be (tokens.length > 2) and array ref should be tokens[2] instead.

String[] tokens = msg.split("\\|");
  			if (tokens.length > 3) {
  				try {
  					asynchReceive = Boolean.parseBoolean(tokens[3]);
  				} catch (Exception e) {
  					System.out.println("Malformed boolean for synch receive");
  				}
  			}

System.out.println("Connecting asynch client " + clientID + " receiver: " + asynchReceive);

Do you think this is something you could correct ?
Thank you for helping.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants