Source code: com/memoire/xmas/basic/XmasBasicPostman.java
1
2 package com.memoire.xmas.basic;
3
4 import com.memoire.xmas.*;
5
6 import java.net.*;
7 import java.util.*;
8
9 public class XmasBasicPostman
10 implements XmasPostman, XmasAgent
11 {
12 public final static XmasBasicPostman DEFAULT=
13 new XmasBasicPostman();
14
15 private XmasBasicPostman() { }
16
17 public final void receiveMessage
18 (XmasMessage _message, XmasPostman _postman)
19 { }
20
21 public void sendMessage(XmasMessage _message, XmasAgent _agent)
22 {
23 if(_message instanceof XmasBasicMessage)
24 sendBasicMessage((XmasBasicMessage)_message,_agent);
25 }
26
27 protected void sendBasicMessage(XmasBasicMessage _message, XmasAgent _agent)
28 {
29 XmasAddress from=_message.from();
30 XmasAddress[] to =_message.to();
31
32 //System.err.println(this+": Message to deliver");
33 //System.err.println(_message.toText());
34
35 XmasBasicAddress my=(XmasBasicAddress)XmasBasicDirectory.DEFAULT.get(this);
36 _message.via(my.toText());
37
38 Object ref=_message.reference();
39 //if(ref==null) ref=_message;
40
41 for(int j=0;j<to.length;j++)
42 {
43 XmasAgent[] dest=XmasBasicDirectory.DEFAULT.resolve(to[j]);
44 for(int i=0;i<dest.length;i++)
45 {
46 try { dest[i].receiveMessage(_message,this); }
47 catch(Exception ex)
48 {
49 ex.printStackTrace();
50 sendMessage(new XmasBasicMessage
51 (my,from,"fail","deliver","message",ref),this);
52 }
53 }
54 }
55 }
56 }