org.apache.commons.net.tftp

Class TFTPRequestPacket

Known Direct Subclasses:
TFTPReadRequestPacket, TFTPWriteRequestPacket

public abstract class TFTPRequestPacket
extends TFTPPacket

An abstract class derived from TFTPPacket definiing a TFTP Request packet type. It is subclassed by the TFTPReadRequestPacket and TFTPWriteRequestPacket classes.

Details regarding the TFTP protocol and the format of TFTP packets can be found in RFC 783. But the point of these classes is to keep you from having to worry about the internals. Additionally, only very few people should have to care about any of the TFTPPacket classes or derived classes. Almost all users should only be concerned with the TFTPClient class receiveFile() and sendFile() methods.

Author:
Daniel F. Savarese

See Also:
TFTPPacket, TFTPReadRequestPacket, TFTPWriteRequestPacket, TFTPPacketException, TFTP

Field Summary

(package private) String
_filename
The filename of the request.
(package private) int
_mode
The transfer mode of the request.
(package private) static byte[][]
_modeBytes
A null terminated byte array representation of the ascii names of the transfer mode constants.
(package private) static String[]
_modeStrings
An array containing the string names of the transfer modes and indexed by the transfer mode constants.

Fields inherited from class org.apache.commons.net.tftp.TFTPPacket

ACKNOWLEDGEMENT, DATA, ERROR, MIN_PACKET_SIZE, READ_REQUEST, SEGMENT_SIZE, WRITE_REQUEST, _address, _port, _type

Constructor Summary

TFTPRequestPacket(InetAddress destination, int port, int type, String filename, int mode)
Creates a request packet of a given type to be sent to a host at a given port with a filename and transfer mode request.
TFTPRequestPacket(int type, DatagramPacket datagram)
Creates a request packet of a given type based on a received datagram.

Method Summary

(package private) DatagramPacket
_newDatagram(DatagramPacket datagram, byte[] data)
This is a method only available within the package for implementing efficient datagram transport by elminating buffering.
String
getFilename()
Returns the requested filename.
int
getMode()
Returns the transfer mode of the request.
DatagramPacket
newDatagram()
Creates a UDP datagram containing all the TFTP request packet data in the proper format.

Methods inherited from class org.apache.commons.net.tftp.TFTPPacket

_newDatagram, getAddress, getPort, getType, newDatagram, newTFTPPacket, setAddress, setPort

Field Details

_filename

(package private)  String _filename
The filename of the request. **


_mode

(package private)  int _mode
The transfer mode of the request. **


_modeBytes

(package private) static final byte[][] _modeBytes
A null terminated byte array representation of the ascii names of the transfer mode constants. This is convenient for creating the TFTP request packets.


_modeStrings

(package private) static final String[] _modeStrings
An array containing the string names of the transfer modes and indexed by the transfer mode constants.

Constructor Details

TFTPRequestPacket

(package private)  TFTPRequestPacket(InetAddress destination,
                                     int port,
                                     int type,
                                     String filename,
                                     int mode)
Creates a request packet of a given type to be sent to a host at a given port with a filename and transfer mode request.

Parameters:
destination - The host to which the packet is going to be sent.
port - The port to which the packet is going to be sent.
type - The type of the request (either TFTPPacket.READ_REQUEST or TFTPPacket.WRITE_REQUEST).
filename - The requested filename.
mode - The requested transfer mode. This should be on of the TFTP class MODE constants (e.g., TFTP.NETASCII_MODE).


TFTPRequestPacket

(package private)  TFTPRequestPacket(int type,
                                     DatagramPacket datagram)
            throws TFTPPacketException
Creates a request packet of a given type based on a received datagram. Assumes the datagram is at least length 4, else an ArrayIndexOutOfBoundsException may be thrown.

Parameters:
type - The type of the request (either TFTPPacket.READ_REQUEST or TFTPPacket.WRITE_REQUEST).
datagram - The datagram containing the received request.

Throws:
TFTPPacketException - If the datagram isn't a valid TFTP request packet of the appropriate type.

Method Details

_newDatagram

(package private) final DatagramPacket _newDatagram(DatagramPacket datagram,
                                                    byte[] data)
This is a method only available within the package for implementing efficient datagram transport by elminating buffering. It takes a datagram as an argument, and a byte buffer in which to store the raw datagram data. Inside the method, the data is set as the datagram's data and the datagram returned.

Overrides:
_newDatagram in interface TFTPPacket

Parameters:
datagram - The datagram to create.
data - The buffer to store the packet and to use in the datagram.

Returns:
The datagram argument.


getFilename

public final String getFilename()
Returns the requested filename.

Returns:
The requested filename.


getMode

public final int getMode()
Returns the transfer mode of the request.

Returns:
The transfer mode of the request.


newDatagram

public final DatagramPacket newDatagram()
Overrides:
newDatagram in interface TFTPPacket

Returns:
A UDP datagram containing the TFTP request packet.