Package com.aelitis.azureus.core.messenger.config

Source Code of com.aelitis.azureus.core.messenger.config.PlatformMessengerConfig

/*
* Created on Nov 26, 2008
* Created by Paul Gardner
*
* Copyright 2008 Vuze, Inc.  All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License only.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*/


package com.aelitis.azureus.core.messenger.config;

import java.util.Map;

import org.gudy.azureus2.core3.util.AESemaphore;

import com.aelitis.azureus.core.messenger.PlatformMessage;
import com.aelitis.azureus.core.messenger.PlatformMessenger;
import com.aelitis.azureus.core.messenger.PlatformMessengerException;
import com.aelitis.azureus.core.messenger.PlatformMessengerListener;

public class
PlatformMessengerConfig
{
  private String     listener_id;
  private boolean    send_azid;
 
  protected
  PlatformMessengerConfig(
    String    _listener_id,
    boolean    _send_azid )
  {
    listener_id    = _listener_id;
    send_azid    = _send_azid;
  }
 
  protected Map
  syncInvoke(
    String             operationID,
    Map             parameters )
 
    throws PlatformMessengerException
  {
    PlatformMessage message =
      new PlatformMessage(
          "AZMSG",
          listener_id,
          operationID,
          parameters,
          0 );

    if ( !send_azid ){
   
      message.setSendAZID( false );
    }
   
    final AESemaphore sem = new AESemaphore( "PlatformMessengerConfig:syncInvoke" );
   
    final Object[] result = { null };
   
    PlatformMessenger.queueMessage(
      message,
      new PlatformMessengerListener()
      {
        public void
        messageSent(
          PlatformMessage   message )
        {
        }
 
        public void
        replyReceived(
          PlatformMessage   message,
          String         replyType,
          Map         reply )
        {
          try{
            if ( replyType.equals( PlatformMessenger.REPLY_EXCEPTION )){
             
              String    e_message   = (String)reply.get( "message" );

              if ( e_message != null ){
               
                result[0] = new PlatformMessengerException( e_message );

              }else{
               
                String    text   = (String)reply.get( "text" );
               
                Throwable  e     = (Throwable)reply.get( "Throwable" );
               
                if ( text == null && e == null ){
                 
                  result[0] = new PlatformMessengerException( "Unknown error" );
                 
                }else if ( text == null ){
                 
                  result[0] = new PlatformMessengerException( "Failed to send RPC", e );
                 
                }else if ( e == null ){
                 
                  result[0] = new PlatformMessengerException( text );
                 
                }else{
                 
                  result[0] = new PlatformMessengerException( text, e );
                }
              }
            }else{
             
              result[0] = reply;
            }
          }finally{
           
            sem.release();
          }
        }
      });
   
    sem.reserve();
   
    if ( result[0] instanceof PlatformMessengerException ){
     
      throw((PlatformMessengerException)result[0]);
    }
   
    return((Map)result[0]);
  }
}
TOP

Related Classes of com.aelitis.azureus.core.messenger.config.PlatformMessengerConfig

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.