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