Package anvil.core.net

Source Code of anvil.core.net.AnyInetAddress

/*
* $Id: AnyInetAddress.java,v 1.22 2002/09/16 08:05:03 jkl Exp $
*
* Copyright (c) 2002 Njet Communications Ltd. All Rights Reserved.
*
* Use is subject to license terms, as defined in
* Anvil Sofware License, Version 1.1. See LICENSE
* file, or http://njet.org/license-1.1.txt
*/
package anvil.core.net;

import anvil.core.Any;
import anvil.core.AnyAbstractClass;
import anvil.core.Serialization;
import anvil.core.Serializer;
import anvil.core.Unserializer;
import anvil.core.UnserializationException;
import anvil.script.Context;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
import java.net.InetAddress;
import java.net.UnknownHostException;

///
/// @class InetAddress
/// This class represents an Internet Protocol (IP) address.
///

/**
* class AnyInetAddress
*
* @author: Jani Lehtim�ki
*/
public class AnyInetAddress extends AnyAbstractClass
{

  public static final anvil.script.compiler.NativeClass __class__ =
    new anvil.script.compiler.NativeClass("InetAddress", AnyInetAddress.class,
     //DOC{{
    ""+
      "\n" +
      " @class InetAddress\n" +
      " This class represents an Internet Protocol (IP) address. \n" +
      "\n" +
      " @method getAddress\n" +
      " Returns the IP address. \n" +
      " @synopsis string getAddress()\n" +
      " @return the ip address string \"a.b.c.d\"\n" +
      " @method getHost\n" +
      " Returns the hostname of this address.\n" +
      " @synopsis string getHost()\n" +
      " @return host name\n" +
      " @method isMulticast\n" +
      " Utility to check if this address is multicast address.\n" +
      " @synopsis boolean isMulticast()\n" +
      " @return true if is multicast address\n"
    //}}DOC
    );
  static {
    NetModule.class.getName();
  }

  private InetAddress _address;
 

  public static final Any create(String host)
  {
    try {
      return new AnyInetAddress(InetAddress.getByName(host));
    } catch (UnknownHostException e) {
      return UNDEFINED;
    }
  }
 
 
  public AnyInetAddress(InetAddress url)
  {
    _address = url;
  }

  public final anvil.script.ClassType classOf() {
    return __class__;
  }


  public Object toObject()
  {
    return _address;
  }


  public String toString()
  {
    return _address.getHostName();
  }
 
 
  public Writer toAnvil(Writer writer) throws IOException
  {
    writer.write("anvil.net.getByName(\"");
    writer.write(anvil.util.Conversions.escape(_address.getHostName(), true));
    writer.write('"');
    writer.write(')');
    return writer;
  }


  public Writer toJava(Writer writer) throws IOException
  {
    writer.write("anvil.core.net.AnyInetAddress.create(\"");
    writer.write(anvil.util.Conversions.escape(_address.getHostName(), true));
    writer.write('"');
    writer.write(')');
    return writer;
  }


  public anvil.codec.Code toCode(anvil.codec.Code code)
  {
    anvil.codec.ConstantPool pool = code.getPool();
    code.astring(_address.getHostName());
    code.invokestatic(code.getPool().addMethodRef("anvil/core/io/AnyInetAddress",
      "create", "(Ljava/lang/String;)Lanvil/core/Any;"));
    return code;
  }
 

  public boolean equals(Object obj)
  {
    if (obj == this) {
      return true;
    }
    if (obj instanceof AnyInetAddress) {
      return _address.equals(((AnyInetAddress)obj)._address);
    }
    return false;
  }


  public void serialize(Serializer serializer) throws IOException
  {
    if (serializer.register(this)) {
      return;
    }
    String s = _address.getHostAddress();
    serializer.write('I');
    serializer.write(s.length());
    serializer.write(':');
    serializer.writeBinary(s);
  }


  public static final Any unserialize(Unserializer unserializer)
    throws UnserializationException
  {
    try {
      AnyInetAddress addr = new AnyInetAddress(
          InetAddress.getByName(unserializer.getBinaryString()));
      unserializer.register(addr);
      return addr;
    } catch (UnknownHostException e) {
      throw new UnserializationException(e.toString());
    }
  }

  /// @method getAddress
  /// Returns the IP address.
  /// @synopsis string getAddress()
  /// @return the ip address string "a.b.c.d"
  public Any m_getAddress()
  {
    return Any.create(_address.getHostAddress());
  }


  /// @method getHost
  /// Returns the hostname of this address.
  /// @synopsis string getHost()
  /// @return host name
  public Any m_getHost()
  {
    return Any.create(_address.getHostName());
  }


  /// @method isMulticast
  /// Utility to check if this address is multicast address.
  /// @synopsis boolean isMulticast()
  /// @return true if is multicast address
  public Any m_isMulticast()
  {
    return Any.create(_address.isMulticastAddress());
  }
 
}
TOP

Related Classes of anvil.core.net.AnyInetAddress

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.