Hi Rahul,

The format that is used is the AMQP one as described here:
http://cwiki.apache.org/qpid/management-design-notes.html

I would suggest you reuse the existing java Encoder/Decoder. You can do
something like: 

==== code sample ======
public class ManagementDecoder extends AbstractDecoder
{
    private final ByteBuffer _buf;

    public ManagementDecoder(ByteBuffer buf)
    {
        _buf = buf;
    }
....
==== end of code sample ======

Then when receiving a message you need to decode it based on its type.
For example: 

==== code sample ======
 ManagementDecoder decoder = new ManagementDecoder(buf);
 .....
 pn = decoder.readStr8();
 cn = decoder.readStr8();           
 ...
 int propCnt = decoder.readUint16();
 for( int i = 0; i < propCnt; i++ )
 {
    Map<String,Object> map = decoder.readMap();
    .....
==== end of code sample ======

I would also suggest we define a management interface (you can look at
the python one --- qpid/python/qpid/management.py) that we can use to
access to the managed packages/classes/objects...


Arnaud 

On Thu, 2008-06-19 at 12:02 +0100, [EMAIL PROTECTED] wrote:
> Hi,
> 
> I did again with Maven and this time it builds all the classes... So after 
> creating and binding both the queues "reply" and "management". I am trying 
> to fetch the management information (all what broker knows) from management 
> queue and getting some encoded messages (i believe). for instance,
> 
> --------------
> Message: AM1h
> Message: AM1c
> Message: AM1c
> 
> Message: AM1c
> Message: AM1c
> �ú�h�XW*��h�_�
> amq.directdirect
> Message: AM1i
> �ú�h�XXCq�h�_�
> Message: AM1i
> �ú�h�XYIY�h�_�xR
> Message: AM1i
> �ú�h�XZH��h�_�xR
> Message: AM1i
> �ú�h�X[Q��h�_Ȭ�
> amq.fanoutfanout
> Message: AM1i
> �ú�h�X\O�h�_Ȭ�
> Message: AM1i
> �ú�h�X]P��h�_���
> Message: AM1i
> �ú�h�X^N��h�_���
> Message: AM1c
> �ú�h�X_OP�h�_ǕV
> Message: AM1i
> �ú�h�X`Ke�h�_ǕV
> Message: AM1c
> �ú�h�XaK��h�_�v
> Message: AM1i
> �ú�h�XbF��h�_�v
> ....
> ...
> 
> java program which is retrieving this above mentioned encoded management 
> information from management queue is :
> 
> package apache.qpid.client;
> 
> import java.nio.ByteBuffer;
> import org.apache.qpidity.api.Message;
> import org.apache.qpidity.nclient.Client;
> import org.apache.qpidity.nclient.Connection;
> import org.apache.qpidity.nclient.Session;
> import org.apache.qpidity.nclient.util.MessageListener;
> import org.apache.qpidity.nclient.util.MessagePartListenerAdapter;
> import org.apache.qpidity.transport.MessageCreditUnit;
> 
> /**
>  * This listens messages from management queue
>  */
> // TODO: decode these messages
> 
> public class Listener  implements MessageListener
> {
>    // implementation of onMessage
>     public void onMessage(Message m)
>     {
>        String data = null;
> 
>         try
>         {
>              ByteBuffer buf = m.readData();
>             byte[] b = new byte[buf.remaining()];
>             buf.get(b);
>             data = new String(b);
>         }
>         catch(Exception e)
>         {
>             System.out.print("Error reading message");
>             e.printStackTrace();
>         }
>         System.out.println("Message: " + data);
>     }
>     public static void main(String[] args)
>     {
>         // Create connection
>         Connection con = Client.createConnection();
>         try
>         {
>             con.connect("localhost", 5672, "test", "guest", "guest");
>         }
>         catch(Exception e)
>         {
>             System.out.print("Error connecting to broker");
>             e.printStackTrace();
>         }
>         // Create session
>         Session session = con.createSession(0);
>         // Create an instance of the listener
>         Listener listener = new Listener();
>         // create a subscription 
>         session.messageSubscribe("management",
>                                  "listener_management",
>                                  Session.TRANSFER_CONFIRM_MODE_NOT_REQUIRED,
>                                  Session.TRANSFER_ACQUIRE_MODE_PRE_ACQUIRE,
>                                  new MessagePartListenerAdapter(listener), 
> null);
>         // issue credits
>            session.messageFlow("listener_management", 
> MessageCreditUnit.BYTE, Session.MESSAGE_FLOW_MAX_BYTES);
>         session.messageFlow("listener_management", 
> MessageCreditUnit.MESSAGE, 25);
>         // confirm completion
>         session.sync();
>        session.messageCancel("listener_management");
>         //cleanup
>         session.sessionDetach(session.getName());
>         try
>         {
>             con.close();
>         }
>         catch(Exception e)
>         {
>             System.out.print("Error closing broker connection");
>             e.printStackTrace();
>         }
>     }
> }
> 
> My question is how can I decode these messages?
> 
> Thank you.
> 
> Regards,
> Rahul
> 
> 
> On Jun 16 2008, Aidan Skinner wrote:
> 
> > On Mon, Jun 16, 2008 at 9:56 AM,  <[EMAIL PROTECTED]> wrote:
> > 
> > > Thanks for your help. I am still with my previous problem (i.e. 
> > > missing some APIs)
> > 
> > > Client.java (under org.apache.qpidity.nclient) is missing some apis. eg.
> > >
> > > org.apache.qpidity.transport.ConnectionClose;
> > 
> > > due to these I can not compile/run the code.
> > 
> > It looks like you haven't run the generator, try doing an ant build
> > and it should create those classes for you.
> > 
> > - Aidan
> > 

Reply via email to