diff options
Diffstat (limited to 'libjava/java/net/DatagramPacket.java')
-rw-r--r-- | libjava/java/net/DatagramPacket.java | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/libjava/java/net/DatagramPacket.java b/libjava/java/net/DatagramPacket.java new file mode 100644 index 00000000000..72b7bbdd4bb --- /dev/null +++ b/libjava/java/net/DatagramPacket.java @@ -0,0 +1,175 @@ +// DatagramPacket.java - Represents packets in a connectionless protocol. + +/* Copyright (C) 1999 Cygnus Solutions + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.net; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date April 28, 1999. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification, as well + * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998). + * Status: Believed complete and correct. + */ + +public final class DatagramPacket +{ + private byte[] buffer; + private int offset; + private int length; + private InetAddress address; + private int port; + + // JDK1.2 + public DatagramPacket(byte[] buf, int offset, int length) + { + // FIXME: We can't currently rely on NullPointerException being + // thrown when we invoke a method on a null object. + if (buf == null) + throw new NullPointerException("Null buffer"); + if (offset < 0) + throw new IllegalArgumentException("Invalid offset: " + offset); + if (length < 0) + throw new IllegalArgumentException("Invalid length: " + length); + if (offset + length > buf.length) + throw new IllegalArgumentException("Potential buffer overflow - offset: " + + offset + " length: " + length); + + buffer = buf; + this.offset = offset; + this.length = length; + this.address = null; + this.port = -1; + } + + public DatagramPacket(byte[] buf, int length) + { + this(buf, 0, length); + } + + // JDK1.2 + public DatagramPacket(byte[] buf, int offset, int length, + InetAddress address, int port) + { + // FIXME: We can't currently rely on NullPointerException being + // thrown when we invoke a method on a null object. + if (buf == null) + throw new NullPointerException("Null buffer"); + if (offset < 0) + throw new IllegalArgumentException("Invalid offset: " + offset); + if (length < 0) + throw new IllegalArgumentException("Invalid length: " + length); + if (offset + length > buf.length) + throw new IllegalArgumentException("Potential buffer overflow - offset: " + + offset + " length: " + length); + if (port < 0 || port > 65535) + throw new IllegalArgumentException("Invalid port: " + port); + if (address == null) + throw new NullPointerException("Null address"); + + buffer = buf; + this.offset = offset; + this.length = length; + this.address = address; + this.port = port; + } + + public DatagramPacket(byte[] buf, int length, InetAddress address, int port) + { + this(buf, 0, length, address, port); + } + + public synchronized InetAddress getAddress() + { + return address; + } + + public synchronized int getPort() + { + return port; + } + + public synchronized byte[] getData() + { + return buffer; + } + + // JDK1.2 + public synchronized int getOffset() + { + return offset; + } + + public synchronized int getLength() + { + return length; + } + + public synchronized void setAddress(InetAddress iaddr) + { + if (iaddr == null) + throw new NullPointerException("Null address"); + + address = iaddr; + } + + public synchronized void setPort(int iport) + { + if (iport < 0 || iport > 65535) + throw new IllegalArgumentException("Invalid port: " + iport); + + port = iport; + } + + public synchronized void setData(byte[] buf) + { + // This form of setData requires setLength to be called separately + // and subsequently. + if (buf == null) + throw new NullPointerException("Null buffer"); + + buffer = buf; + } + + // JDK1.2 + public synchronized void setData(byte[] buf, int offset, int length) + { + // This form of setData must be used if offset is to be changed. + + // FIXME: We can't currently rely on NullPointerException being + // thrown when we invoke a method on a null object. + if (buf == null) + throw new NullPointerException("Null buffer"); + if (offset < 0) + throw new IllegalArgumentException("Invalid offset: " + offset); + if (length < 0) + throw new IllegalArgumentException("Invalid length: " + length); + if (offset + length > buf.length) + throw new IllegalArgumentException("Potential buffer overflow - offset: " + + offset + " length: " + length); + + buffer = buf; + this.offset = offset; + this.length = length; + } + + public synchronized void setLength(int length) + { + if (length < 0) + throw new IllegalArgumentException("Invalid length: " + length); + if (offset + length > buffer.length) + throw new IllegalArgumentException("Potential buffer overflow - offset: " + + offset + " length: " + length); + + this.length = length; + } +} |