[Spread-users] Spread Questions: Asynchronous/Receive with timeout

John Schultz jschultz at spreadconcepts.com
Mon May 9 12:30:18 EDT 2005


Hi Grant,

Sorry I sent this on Friday but to the wrong address!  Anyway, it seems like you've already gotten good answers, but here are my .02 anyway! ;)

Li, Grant wrote:
> 1) Does Spread support asynchronous communications? 

The C Spread interface does not currently have an explicit asynchronous 
interface.  If you wanted such functionality, you could spawn a thread 
that all it did was call SP_receive() and handle the messages that it 
receives on a connection -- this is a quite common approach for people 
that use multi-threaded programming.

Alternatively, the Java Spread interface does have an explicit 
asynchronous interface through the use of 'MessageListener's that 
effectively spawn a thread that fires callbacks upon events (e.g. - 
receiving a message).

For sending, currently you can be blocked in a send as the connection between the client app. and daemon is a reliable channel.  If you are remotely connecting to your daemon across TCP/IP then the possibility of blocking for a significant period of time goes up a lot.

> I ran the sample
> program flooder.c with -wo and -ro flags. It seems like
> that messages are disappeared if messages are sent by a sender while a
> receiver is not running.

Yes, Spread provides "instant messaging."

When you send a message it will only get to (at most) the Spread 
connections that are in the associated group membership at the time the 
message is delivered (which can be very different than when the message 
is sent).

Spread itself does not do persistent messaging where messages will 
eventually get to everyone that is a "long term member" of the group, 
even if they are currently disconnected or partitioned away due to 
network problems.

> 2) Is it possible that a SP_receive() call can wake up after a timeout?

It would be relatively simply to alter SP_receive to add a timeout 
parameter and functionality.  However, I don't believe Spread currently 
exposes such functionality in its API.

If you were interested in getting significantly more help with 
understanding or solving such issues you can contact Spread Concepts, 
which offers consulting on such issues.  Otherwise, keep emailing 
questions to this list and people can usually help out with relatively 
simple issues.

Cheers!
John

-- 
John Lane Schultz
Spread Concepts LLC
Phn: 443 838 2200






More information about the Spread-users mailing list