/*
* Created on May 6, 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.*;
import org.gudy.azureus2.core3.util.Constants;
import org.json.simple.JSONObject;
import com.aelitis.azureus.core.messenger.*;
public class
PlatformContentNetworkMessenger
{
private static final String LISTENER_ID = "cnetworks";
private static final PlatformMessengerConfig dispatcher =
new PlatformMessengerConfig( LISTENER_ID, true );
private static final String OP_LIST_CNETORKS = "list-networks";
public static List<contentNetworkDetails>
listNetworks()
throws PlatformMessengerException
{
if (true) {
return new ArrayList<contentNetworkDetails>(0);
}
JSONObject parameters = new JSONObject();
parameters.put( "azver", Constants.AZUREUS_VERSION );
Map reply = dispatcher.syncInvoke( OP_LIST_CNETORKS, parameters );
List<Map> networks = (List<Map>)reply.get( "networks" );
if ( networks == null ){
throw( new PlatformMessengerException( "No networks returned" ));
}
List<contentNetworkDetails> result = new ArrayList<contentNetworkDetails>();
for ( Map map: networks ){
result.add( new contentNetworkDetails( map ));
}
return( result );
}
public static void
listNetworksAync(final listNetworksListener l, int maxDelayMS)
{
if (l != null) {
l.networkListReturned(new ArrayList<contentNetworkDetails>(0));
return;
}
JSONObject parameters = new JSONObject();
parameters.put("azver", Constants.AZUREUS_VERSION);
PlatformMessage message = new PlatformMessage("AZMSG", LISTENER_ID,
OP_LIST_CNETORKS, parameters, maxDelayMS);
PlatformMessengerListener listener = new PlatformMessengerListener() {
// @see com.aelitis.azureus.core.messenger.PlatformMessengerListener#replyReceived(com.aelitis.azureus.core.messenger.PlatformMessage, java.lang.String, java.util.Map)
public void replyReceived(PlatformMessage message, String replyType,
Map reply) {
List<Map> networks = (List<Map>) reply.get("networks");
List<contentNetworkDetails> result;
if (networks == null) {
result = null;
} else {
result = new ArrayList<contentNetworkDetails>();
for (Map map : networks) {
result.add(new contentNetworkDetails(map));
}
}
if (l != null) {
l.networkListReturned(result);
}
}
// @see com.aelitis.azureus.core.messenger.PlatformMessengerListener#messageSent(com.aelitis.azureus.core.messenger.PlatformMessage)
public void messageSent(PlatformMessage message) {
}
};
PlatformMessenger.queueMessage(message, listener);
}
public static class
contentNetworkDetails
{
private Map details;
protected
contentNetworkDetails(
Map _details )
{
details = _details;
}
public long
getID()
{
return(((Long)details.get( "id" )).longValue());
}
public long
getVersion()
{
return(((Long)details.get( "version" )).longValue());
}
public String
getName()
{
return((String)details.get( "name" ));
}
public String
getIconURL()
{
return((String)details.get( "iconUrl" ));
}
public String
getMainURL()
{
return((String)details.get( "baseUrl" ));
}
public String
getString()
{
return( "id=" + getID() + ";version=" + getVersion() + ";name=" + getName());
}
}
public static interface
listNetworksListener
{
public void networkListReturned(List<contentNetworkDetails> list);
}
}