00001 00002 #ifndef OSCL_SOCKET_RECV_FROM_H_INCLUDED 00003 #define OSCL_SOCKET_RECV_FROM_H_INCLUDED 00004 00005 #include "oscl_socket_serv_imp.h" 00006 #include "oscl_socket_imp.h" 00007 #include "oscl_socket_method.h" 00008 00012 class OsclRecvFromRequest; 00013 00014 class OsclRecvFromMethod : public OsclSocketMethod 00015 { 00016 public: 00017 static OsclRecvFromMethod *NewL(OsclIPSocketI& c); 00018 00019 ~OsclRecvFromMethod(); 00020 00021 TPVSocketEvent RecvFrom(uint8* &aPtr, uint32 aMaxLen, 00022 OsclNetworkAddress &aAddress, 00023 int32 aTimeout, 00024 uint32 aMultiMax, 00025 Oscl_Vector<uint32, OsclMemAllocator>* aPacketLen, 00026 Oscl_Vector<OsclNetworkAddress, OsclMemAllocator>* aPacketSource); 00027 00028 uint8 *GetRecvData(int32 *aLength); 00029 00030 private: 00031 OsclRecvFromMethod(OsclIPSocketI& c) 00032 : OsclSocketMethod(c, "osclrecvfrommethod", EPVSocketRecvFrom) 00033 {} 00034 00035 void ConstructL(); 00036 00037 public: 00038 OsclRecvFromRequest *RecvFromRequest() 00039 { 00040 return (OsclRecvFromRequest*)iSocketRequestAO; 00041 } 00042 }; 00043 00047 class OsclRecvFromRequest : public OsclSocketRequestAO 00048 { 00049 public: 00050 uint8 *GetRecvData(int32 *aLength); 00051 00052 OsclRecvFromRequest(OsclSocketMethod& c) 00053 : OsclSocketRequestAO(c, "osclRecvFromRequest") 00054 {} 00055 00056 void RecvFrom(uint8* &aPtr, uint32 aMaxLen, 00057 OsclNetworkAddress& aAddress, uint32 aMultiMax, 00058 Oscl_Vector<uint32, OsclMemAllocator>* aPacketLen, 00059 Oscl_Vector<OsclNetworkAddress, OsclMemAllocator>* aPacketSource); 00060 void Success(); 00061 00062 private: 00063 RecvFromParam*Param() 00064 { 00065 return(RecvFromParam*)iParam; 00066 } 00067 }; 00068 00069 00070 #endif 00071