aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/net/DatagramPacket.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/net/DatagramPacket.java')
-rw-r--r--libjava/java/net/DatagramPacket.java175
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;
+ }
+}