Package com.uwyn.drone.core

Source Code of com.uwyn.drone.core.ServerInfo

/*
* Copyright 2002-2005 Uwyn bvba/sprl <info[remove] at uwyn dot com>
* Distributed under the terms of the GNU Lesser General Public
* License, v2.1 or later
*
* $Id: ServerInfo.java 2823 2006-01-20 09:12:32Z gbevin $
*/
package com.uwyn.drone.core;

import com.uwyn.drone.core.exceptions.CoreException;
import com.uwyn.drone.core.exceptions.UnknownServerAddressException;
import com.uwyn.drone.core.exceptions.UnknownServerHostnameException;
import com.uwyn.rife.tools.StringUtils;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import java.nio.charset.Charset;
import java.nio.charset.UnsupportedCharsetException;
import java.util.ArrayList;
import java.util.Collection;

class ServerInfo
{
  private static final int  DEFAULT_MAX = 1024;
  private static final int  DEFAULT_AMOUNT = 25;
  private static final int  DEFAULT_INTERVAL = 1000;
  private static final int  DEFAULT_TIMEOUT = 5 * 60 * 1000;
  private static final String  DEFAULT_CHARSET = "UTF-8";
 
  private ArrayList  mAddresses = null;
  private int      mMax = 0;
  private int      mAmount = 0;
  private int      mInterval = 0;
  private int      mTimeout = 0;
  private String    mCharset = null;
  private String    mServerPassword = null;

  ServerInfo()
  {
    mAddresses = new ArrayList();
    mMax = DEFAULT_MAX;
    mAmount = DEFAULT_AMOUNT;
    mInterval = DEFAULT_INTERVAL;
    mTimeout = DEFAULT_TIMEOUT;
    mCharset = DEFAULT_CHARSET;
  }
 
  Collection getAddresses()
  {
    return mAddresses;
  }
 
  int getMax()
  {
    return mMax;
  }
 
  int getAmount()
  {
    return mAmount;
  }
 
  int getInterval()
  {
    return mInterval;
  }
 
  int getTimeout()
  {
    return mTimeout;
  }
 
  String getCharset()
  {
    return mCharset;
  }
 
  void setOutput(int max, int amount, int interval)
  {
    if (max <= 0)    throw new IllegalArgumentException("max has to be bigger than 0.");
    if (max <= amountthrow new IllegalArgumentException("max has to be bigger than amount.");
    if (amount <= 0throw new IllegalArgumentException("amount has to be bigger than 0.");
    if (interval <= 0throw new IllegalArgumentException("interval has to be bigger than 0.");
     
    mMax = max;
    mAmount = amount;
    mInterval = interval;
  }

  void addAddress(String host, int port)
  throws CoreException
  {
    if (null == host)    throw new IllegalArgumentException("host can't be null.");
    if (0 == host.length())  throw new IllegalArgumentException("host can't be empty.");
   
    // detect ip addresses
    byte[] parts = StringUtils.splitToByteArray(host, ".");
    if (4 == parts.length)
    {
      addAddress(parts, port);
      return;
    }

    // no ip address, thus a regular hostname
    InetAddress address = null;
   
    try
    {
      address = InetAddress.getByName(host);
    }
    catch (UnknownHostException e)
    {
      throw new UnknownServerHostnameException(host, e);
    }

    addAddress(address, port);
  }

  void addAddress(byte[] ip, int port)
  throws CoreException
  {
    if (null == ipthrow new IllegalArgumentException("ip can't be null.");

    InetAddress address = null;
   
    try
    {
      address = InetAddress.getByAddress(ip);
    }
    catch (UnknownHostException e)
    {
      throw new UnknownServerAddressException(ip, e);
    }
   
    addAddress(address, port);
  }
 
  synchronized void addAddress(InetAddress address, int port)
  {
    assert address != null;
    assert port >= 0;
   
    mAddresses.add(new InetSocketAddress(address, port));
  }
 
  void setTimeout(int timeout)
  {
    mTimeout = timeout;
  }
 
  void setCharset(String charset)
  throws UnsupportedCharsetException
  {
    if (!Charset.isSupported(charset))
    {
      throw new UnsupportedCharsetException(charset);
    }
   
    mCharset = charset;
  }

  void setServerPassword(String mServerPassword)
  {
    mServerPassword = mServerPassword;
  }

  String getServerPassword()
  {
    return mServerPassword;
  }
}
TOP

Related Classes of com.uwyn.drone.core.ServerInfo

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.