00001 #ifndef __J2K__TFTP_Packet_HPP__ 00002 #define __J2K__TFTP_Packet_HPP__ 00003 00004 #include <math.h> 00005 #include <j2k/Fred/Standard.hpp> 00006 #include <j2k/Net/TFTP/TFTP_header.hpp> 00007 00008 //This class creates and sends each packets 00009 00010 class TFTP_Packet { 00011 public: 00012 TFTP_Packet(); 00013 00014 // Set the opcode value 00015 inline void setOpCode( enum OpCode_t op ); 00016 00017 // Return the opcode value 00018 inline short getOpCode(); 00019 00020 void create_RRQ_WRQ(); 00021 inline void sendRRQ(); 00022 inline void sendWRQ(); 00023 00024 // data IS NOT NULL TERMINATED ! 00025 void createData( short blockNo, char* data, size_t sz ); 00026 inline void createData( const char* rawData, size_t sz ); 00027 inline void sendData( short blockNo, char* data, size_t sz ); 00028 inline void send(); 00029 00030 void createAck( short blockNo ); 00031 void sendAck( short blockNo ); 00032 00033 void createError( enum TFTP_errcode_t e, const char* errmsg = "" ); 00034 inline void sendError( enum TFTP_errcode_t e, const char* errmsg = "" ); 00035 inline char* getErrorMsg(); 00036 00037 void createOAck(); 00038 inline void sendOAck(); 00039 00040 inline double getTimeStamp(); 00041 inline void setTimeStamp( double t ); 00042 00043 inline double getID(); 00044 inline char* getData(); 00045 00046 short getBlockNo(); 00047 00048 inline size_t getpktLength(); 00049 00050 private: 00051 short opCode; 00052 short block; 00053 short err; 00054 00055 public: 00056 char* pkt; 00057 size_t pktLength; 00058 00059 char* errorMsg; 00060 double timestamp; 00061 00062 public: 00063 short resent; 00064 }; 00065 00066 #include <j2k/Net/TFTP/TFTP_Option.hpp> 00067 #include <j2k/Net/UDP/UDP_Socket.hpp> 00068 #include <j2k/Net/UDP/UDP_SocketClient.hpp> 00069 #include <j2k/Net/UDP/UDP_SocketServer.hpp> 00070 00071 #endif 00072 00073 00074