77import java .util .Collection ;
88
99public class ASAPPeerFS extends ASAPInternalPeerWrapper implements ASAPPeerService , ASAPChunkReceivedListener {
10+ public static final CharSequence DEFAULT_ROOT_FOLDER_NAME = ASAPEngineFS .DEFAULT_ROOT_FOLDER_NAME ;
11+
1012 private final String rootFolder ;
11- private final ASAPInternalPeer asapInternalPeer ;
13+ private ASAPChunkReceivedListener chunkReceivedListener ;
1214
1315 public ASAPPeerFS (CharSequence owner , CharSequence rootFolder ,
1416 Collection <CharSequence > supportFormats ) throws IOException , ASAPException {
15-
16- this .asapInternalPeer = ASAPInternalPeerFS .createASAPPeer (owner , rootFolder , supportFormats ,this );
17- super .setInternalPeer (asapInternalPeer );
18-
17+ super .setInternalPeer (ASAPInternalPeerFS .createASAPPeer (owner , rootFolder , supportFormats , this ));
1918 this .rootFolder = rootFolder .toString ();
2019 }
2120
21+ public void overwriteChuckReceivedListener (ASAPChunkReceivedListener listener ) {
22+ this .chunkReceivedListener = listener ;
23+ }
24+
2225 @ Override
2326 public void chunkReceived (String format , String sender , String uri , int era ) throws IOException {
2427 StringBuilder sb = new StringBuilder ();
@@ -27,18 +30,34 @@ public void chunkReceived(String format, String sender, String uri, int era) thr
2730 sb .append ("\n ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" );
2831 this .log (sb .toString ());
2932
30- ASAPMessages receivedMessages =
31- Helper .getMessagesByChunkReceivedInfos (format , sender , uri , this .rootFolder , era );
33+ if (this .chunkReceivedListener != null ) {
34+ this .log ("chunk received listener set - call this one" );
35+ this .chunkReceivedListener .chunkReceived (format , sender , uri , era );
36+ } else {
37+ this .log ("extract messages from chunk and notify listener" );
38+ ASAPMessages receivedMessages =
39+ Helper .getMessagesByChunkReceivedInfos (format , sender , uri , this .rootFolder , era );
3240
33- this .asapMessageReceivedListenerManager .notifyReceived (format , receivedMessages , true );
41+ this .asapMessageReceivedListenerManager .notifyReceived (format , receivedMessages , true );
42+ }
3443 }
3544
45+ // TODO move behaviour control into this package
46+
3647 @ Override
3748 public void sendASAPMessage (CharSequence appName , CharSequence uri , byte [] message ) throws ASAPException {
3849 try {
39- ASAPEngine asapEngine = this .asapInternalPeer .createEngineByFormat (appName );
40- asapEngine .activateOnlineMessages (this .getInternalPeer ());
41- asapEngine .add (uri , message );
50+ ASAPEngine engine = this .getInternalPeer ().createEngineByFormat (appName );
51+ engine .activateOnlineMessages (this .getInternalPeer ());
52+ engine .add (uri , message );
53+ // send online
54+ try {
55+ this .getInternalPeer ().sendOnlineASAPAssimilateMessage (appName , uri , message );
56+ }
57+ catch (ASAPException e ) {
58+ // no online peers - that's ok
59+ this .log ("could not send message online - that's ok." );
60+ }
4261 } catch (IOException e ) {
4362 this .log (e .getLocalizedMessage ());
4463 throw new ASAPException ("problems getting asap engine" , e );
0 commit comments