00001 00032 #ifndef LL_LLPACKETACK_H 00033 #define LL_LLPACKETACK_H 00034 00035 #include "llhost.h" 00036 00037 class LLReliablePacketParams 00038 { 00039 public: 00040 LLHost mHost; 00041 S32 mRetries; 00042 BOOL mPingBasedRetry; 00043 F32 mTimeout; 00044 void (*mCallback)(void **,S32); 00045 void** mCallbackData; 00046 char* mMessageName; 00047 00048 public: 00049 LLReliablePacketParams() 00050 { 00051 clear(); 00052 }; 00053 00054 ~LLReliablePacketParams() { }; 00055 00056 void clear() 00057 { 00058 mHost.invalidate(); 00059 mRetries = 0; 00060 mPingBasedRetry = TRUE; 00061 mTimeout = 0.f; 00062 mCallback = NULL; 00063 mCallbackData = NULL; 00064 mMessageName = NULL; 00065 }; 00066 00067 void set( 00068 const LLHost& host, 00069 S32 retries, 00070 BOOL ping_based_retry, 00071 F32 timeout, 00072 void (*callback)(void**,S32), 00073 void** callback_data, char* name) 00074 { 00075 mHost = host; 00076 mRetries = retries; 00077 mPingBasedRetry = ping_based_retry; 00078 mTimeout = timeout; 00079 mCallback = callback; 00080 mCallbackData = callback_data; 00081 mMessageName = name; 00082 }; 00083 }; 00084 00085 class LLReliablePacket 00086 { 00087 public: 00088 LLReliablePacket( 00089 S32 socket, 00090 U8* buf_ptr, 00091 S32 buf_len, 00092 LLReliablePacketParams* params); 00093 ~LLReliablePacket() 00094 { 00095 mCallback = NULL; 00096 delete [] mBuffer; 00097 mBuffer = NULL; 00098 }; 00099 00100 friend class LLCircuitData; 00101 protected: 00102 S32 mSocket; 00103 LLHost mHost; 00104 S32 mRetries; 00105 BOOL mPingBasedRetry; 00106 F32 mTimeout; 00107 void (*mCallback)(void**,S32); 00108 void** mCallbackData; 00109 char* mMessageName; 00110 00111 U8* mBuffer; 00112 S32 mBufferLength; 00113 00114 TPACKETID mPacketID; 00115 00116 F64 mExpirationTime; 00117 }; 00118 00119 #endif 00120