Hi,

I am trying to use Thrift over Xmpp chat. The code example is in java.
Consider the example thrift.

service Api
    {
        string hello(1: string message),
        string hello2(1: string message, 2: string message2),
    }

While calling, i am using memory buffer to use xmpp tarnsport

    transport_in = new TMemoryBuffer(0);
    transport_out = new TMemoryBuffer(0);
    protocol_in = new TJSONProtocol(transport_in);
    protocol_out = new TJSONProtocol(transport_out);

    Message msg = new Message();

    client = new Api.Client(protocol_in, protocol_out);
    client.send_hello("Hello");
    msg.setBody(transport_out.toString("UTF-8"));
    newChat.sendMessage(msg);

Response comes in Xmpp message reply :

    public void processMessage(Chat chat, Message message)
    {
        try
        {
client.getInputProtocol().getTransport().write(message.getBody().getBytes());
            System.out.println("Received message: " + client.recv_hello());
        }
        catch (Exception ex)
        {
Logger.getLogger(SimpleXmppMessage.class.getName()).log(Level.INFO, null, ex);
        }
    }

Is there a way to make out the method name for which response is received ? Something like

    switch(message.getBody().getBytes()..(method_id))
    {
        case hello:
            process_hello(message.getBody().getBytes());
            break;
        case hello2:
            process_hello2(message.getBody().getBytes());
            break;
    }

One solution can be to maintain maintain a hashmap of message_id in xmpp vs thrift RPC method. However, if it can be handled in thrift payload, it would make solution elegant. Any pointers?

Regards.
Ashish

Reply via email to