Re: [jgroups-dev] jgroups port to android

Bela Ban <[email protected]> Tue, 11 Jan 2011 08:19:59 +0100
Newsgroups gmane.comp.java.javagroups.devel
Message-ID <[email protected]>
Hi Yann,

(don't forget to post to jg-dev...)

Inline

On 1/10/11 9:38 PM, Yann Sionneau wrote:
> Hello,
>
> Good news ! It's working on android 2.1 2.2 and 2.3 !


Great !


> I have tested the SimpleChat application with 3 phones connected
> together (1 HTC Desire on 2.3, 1 Nexus One on 2.2 and 1 HTC Hero on 2.1)
> with 2 computers (1 Mac OS X Snow Leopard and 1 Ubuntu).
>
> All of these devices were connected to the same wifi subnetwork.
> I used your Broadcast PING which did a good job !
> my udp.xml conf : http://pastebin.com/HnNfukxa
>
> It was working just fine :)


I see you used the default broadcast address of 255.255.255.255 without 
issues, good...


> I ported the Draw demo from jgroups to android too (with several
> modifications so that it's not compatible anymore with the PC version
> included in your git repository).
> It worked well with the phones :)


Do you think there's a chance we can merge those changes back into the 
regular Draw, so we have 1 version. Or is this too cumbersome ?


> Just one strange thing, if I draw on one phone, then start the app on a
> second phone, the second phone does not get the history of the drawing,
> it starts all blank. Is it normal ?

Yes. By default, Draw doesn't do any state transfer (state == content of 
the canvas). If you start Draw with -state, it'll transfer the canvas.


> With SimpleChat all the history was transmitted when joining the group.


Yes, because SimpleChat by default uses state transfer.


> Another question, I had troubles with this file :
> src/org/jgroups/stack/RangeBasedRetransmitter.java , I modified it like
> this :
> https://github.com/fallen/JGroups/commit/959608be03f9e050fce2527e408f555062e4ab81


I made a comment: this is a bug, as the keys (= execution times) will 
need to be ordered. So you could use TreeMap, but would then have to 
synchronize access to it, as TreeMap is not synchronized.

The better solution (for now) is to use DefaultRetransmitter wherever 
RangeBasedRetransmitter is used. I had a configuration switch, but 
removed it some months ago because RangeBasedRetransmitter works really 
well.

This is used by UNICAST2 and NAKACK, via NakReceiverWindow.


> So I replaced the ConcurrentSkipListMap by a ConcurrentHashMap, because
> ConcurrentSkipListMap is not available in Android 2.1 and 2.2 (it's only
> available since 2.3 !)


See my comment above


> It seems to be working just fine, but in theory i am loosing the ordering in the HashMap, is this a serious issue ?


Yes, it is


> Or am I fine like
> that ? Am I going to be in trouble later with bigger programs ?


The exceution times are off, so when you run into retransmissions, they 
might get executed at an incorrect time (= too late).


> I do not understand fully the possible side effects of this change !
>
> Thank you again for all your help, you have been more than helpful :)


No problem. Let me know when the application is available, I'd like to 
try it out !


-- 
Bela Ban
Lead JGroups / Clustering Team
JBoss

------------------------------------------------------------------------------
Gaining the trust of online customers is vital for the success of any company
that requires sensitive data to be transmitted over the Web.   Learn how to 
best implement a security strategy that keeps consumers' information secure 
and instills the confidence they need to proceed with transactions.
http://p.sf.net/sfu/oracle-sfdevnl 
_______________________________________________
Javagroups-development mailing list