Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

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  }