mtptransports/mtpptpiptransport/ptpipcontroller/src/cptpipsockethandler.cpp
changeset 49 c20dd21d1eb4
parent 0 d0791faffa3f
equal deleted inserted replaced
41:2c19c7cf5550 49:c20dd21d1eb4
    11 // Contributors:
    11 // Contributors:
    12 //
    12 //
    13 // Description:
    13 // Description:
    14 //
    14 //
    15 
    15 
    16 
    16 #include "mtpdebug.h"
    17 #include "cptpipsockethandler.h"	//CPTPIPSockethandler
    17 
       
    18 #include "cptpipsockethandler.h"
       
    19 #include "OstTraceDefinitions.h"
       
    20 #ifdef OST_TRACE_COMPILER_IN_USE
       
    21 #include "cptpipsockethandlerTraces.h"
       
    22 #endif
       
    23 	//CPTPIPSockethandler
    18 
    24 
    19 
    25 
    20 
    26 
    21 CPTPIPSocketHandler* CPTPIPSocketHandler::NewLC()
    27 CPTPIPSocketHandler* CPTPIPSocketHandler::NewLC()
    22 	{
    28 	{
       
    29 	OstTraceFunctionEntry0( CPTPIPSOCKETHANDLER_NEWLC_ENTRY );
    23 	CPTPIPSocketHandler* self = new (ELeave) CPTPIPSocketHandler;
    30 	CPTPIPSocketHandler* self = new (ELeave) CPTPIPSocketHandler;
    24 	CleanupStack::PushL(self);
    31 	CleanupStack::PushL(self);
    25 	self->ConstructL();
    32 	self->ConstructL();
       
    33 	OstTraceFunctionExit0( CPTPIPSOCKETHANDLER_NEWLC_EXIT );
    26 	return self;
    34 	return self;
    27 	}
    35 	}
    28 
    36 
    29 /*
    37 /*
    30  Factory Method
    38  Factory Method
    31 */
    39 */
    32 CPTPIPSocketHandler* CPTPIPSocketHandler::NewL()
    40 CPTPIPSocketHandler* CPTPIPSocketHandler::NewL()
    33 	{
    41 	{
       
    42 	OstTraceFunctionEntry0( CPTPIPSOCKETHANDLER_NEWL_ENTRY );
    34 	CPTPIPSocketHandler* self = CPTPIPSocketHandler::NewLC();
    43 	CPTPIPSocketHandler* self = CPTPIPSocketHandler::NewLC();
    35 	CleanupStack::Pop(self);
    44 	CleanupStack::Pop(self);
       
    45 	OstTraceFunctionExit0( CPTPIPSOCKETHANDLER_NEWL_EXIT );
    36 	return self;
    46 	return self;
    37 	}
    47 	}
    38 
    48 
    39 
    49 
    40 CPTPIPSocketHandler::CPTPIPSocketHandler():
    50 CPTPIPSocketHandler::CPTPIPSocketHandler():
    41 		CActive(EPriorityStandard),iReceiveChunk(NULL,0),iWriteChunk(NULL,0)
    51 		CActive(EPriorityStandard),iReceiveChunk(NULL,0),iWriteChunk(NULL,0)
    42 	{
    52 	{
       
    53 	OstTraceFunctionEntry0( CPTPIPSOCKETHANDLER_CPTPIPSOCKETHANDLER_ENTRY );
    43 	CActiveScheduler::Add(this);
    54 	CActiveScheduler::Add(this);
    44 	iState=EReadState;
    55 	iState=EReadState;
       
    56 	OstTraceFunctionExit0( CPTPIPSOCKETHANDLER_CPTPIPSOCKETHANDLER_EXIT );
    45 	}
    57 	}
    46 
    58 
    47 void CPTPIPSocketHandler::ConstructL()
    59 void CPTPIPSocketHandler::ConstructL()
    48 	{
    60 	{
       
    61 	OstTraceFunctionEntry0( CPTPIPSOCKETHANDLER_CONSTRUCTL_ENTRY );
    49 	
    62 	
    50 			
    63 			
       
    64 	OstTraceFunctionExit0( CPTPIPSOCKETHANDLER_CONSTRUCTL_EXIT );
    51 	}
    65 	}
    52 	
    66 	
    53 	
    67 	
    54 RSocket& CPTPIPSocketHandler::Socket()
    68 RSocket& CPTPIPSocketHandler::Socket()
    55 	{			
    69 	{			
       
    70 	OstTraceFunctionEntry0( CPTPIPSOCKETHANDLER_SOCKET_ENTRY );
       
    71 	OstTraceFunctionExit0( CPTPIPSOCKETHANDLER_SOCKET_EXIT );
    56 	return	iSocket;	
    72 	return	iSocket;	
    57 	}
    73 	}
    58 	
    74 	
    59 TSocketHandlerState& CPTPIPSocketHandler::State()
    75 TSocketHandlerState& CPTPIPSocketHandler::State()
    60 {
    76 {
       
    77 	OstTraceFunctionEntry0( CPTPIPSOCKETHANDLER_STATE_ENTRY );
       
    78 	OstTraceFunctionExit0( CPTPIPSOCKETHANDLER_STATE_EXIT );
    61 	return iState;
    79 	return iState;
    62 }
    80 }
    63 	
    81 	
    64    
    82    
    65 	
    83 	
    66 CPTPIPSocketHandler::~CPTPIPSocketHandler()
    84 CPTPIPSocketHandler::~CPTPIPSocketHandler()
    67 	{
    85 	{
       
    86 	OstTraceFunctionEntry0( DUP1_CPTPIPSOCKETHANDLER_CPTPIPSOCKETHANDLER_ENTRY );
    68 	Socket().Close();
    87 	Socket().Close();
       
    88 	OstTraceFunctionExit0( DUP1_CPTPIPSOCKETHANDLER_CPTPIPSOCKETHANDLER_EXIT );
    69 	}
    89 	}
    70 
    90 
    71 /*
    91 /*
    72  Reads from the current accepted socket
    92  Reads from the current accepted socket
    73  @param TRequestStatus passed from PTPIP Controller
    93  @param TRequestStatus passed from PTPIP Controller
    74  */
    94  */
    75 void CPTPIPSocketHandler::ReadFromSocket(MMTPType& aData,TRequestStatus& aCallerStatus)
    95 void CPTPIPSocketHandler::ReadFromSocket(MMTPType& aData,TRequestStatus& aCallerStatus)
    76 	{
    96 	{
       
    97     OstTraceFunctionEntry0( CPTPIPSOCKETHANDLER_READFROMSOCKET_ENTRY );
    77     iReadData = &aData;
    98     iReadData = &aData;
    78 	iChunkStatus = aData.FirstWriteChunk(iReceiveChunk);
    99 	iChunkStatus = aData.FirstWriteChunk(iReceiveChunk);
    79 	//ToDo check this works or not
   100 	//ToDo check this works or not
    80 	iCallerStatus=&aCallerStatus;
   101 	iCallerStatus=&aCallerStatus;
    81 	  
   102 	  
    83 	*/          
   104 	*/          
    84 	Socket().Recv(iReceiveChunk,0,iStatus);
   105 	Socket().Recv(iReceiveChunk,0,iStatus);
    85 	
   106 	
    86 	//start timer	
   107 	//start timer	
    87     SetActive();
   108     SetActive();
       
   109 	OstTraceFunctionExit0( CPTPIPSOCKETHANDLER_READFROMSOCKET_EXIT );
    88 	}
   110 	}
    89 
   111 
    90 /*Writes to the current socket
   112 /*Writes to the current socket
    91 @param TRequestStatus passed from PTPIP Controller
   113 @param TRequestStatus passed from PTPIP Controller
    92 */
   114 */
    93 void CPTPIPSocketHandler::WriteToSocket(MMTPType& aData,TRequestStatus& aCallerStatus)
   115 void CPTPIPSocketHandler::WriteToSocket(MMTPType& aData,TRequestStatus& aCallerStatus)
    94 	{
   116 	{
       
   117 	OstTraceFunctionEntry0( CPTPIPSOCKETHANDLER_WRITETOSOCKET_ENTRY );
    95 	iWriteData=&aData;
   118 	iWriteData=&aData;
    96 	iChunkStatus = aData.FirstReadChunk(iWriteChunk);
   119 	iChunkStatus = aData.FirstReadChunk(iWriteChunk);
    97 
   120 
    98 	iCallerStatus=&aCallerStatus;		
   121 	iCallerStatus=&aCallerStatus;		
    99 	Socket().Write(iWriteChunk,iStatus);	
   122 	Socket().Write(iWriteChunk,iStatus);	
   100 	SetActive();	
   123 	SetActive();	
   101     
   124     
       
   125 	OstTraceFunctionExit0( CPTPIPSOCKETHANDLER_WRITETOSOCKET_EXIT );
   102 	}
   126 	}
   103 
   127 
   104 
   128 
   105 	
   129 	
   106 void CPTPIPSocketHandler::RunL()
   130 void CPTPIPSocketHandler::RunL()
   107 	{
   131 	{
       
   132 	OstTraceFunctionEntry0( CPTPIPSOCKETHANDLER_RUNL_ENTRY );
   108 	TInt err = iStatus.Int();
   133 	TInt err = iStatus.Int();
   109 	User::LeaveIfError(err);
   134 	LEAVEIFERROR( err, 
       
   135 	        OstTrace1( TRACE_ERROR, CPTPIPSOCKETHANDLER_RUNL, "error code is %d", err ));
   110 	
   136 	
   111 	switch(iState)
   137 	switch(iState)
   112 	{
   138 	{
   113 		case EReadState:
   139 		case EReadState:
   114 			if(iChunkStatus!=KMTPChunkSequenceCompletion)  
   140 			if(iChunkStatus!=KMTPChunkSequenceCompletion)  
   147 			User ::RequestComplete(iCallerStatus,err);	  
   173 			User ::RequestComplete(iCallerStatus,err);	  
   148 			iState=EReadState;      	  							
   174 			iState=EReadState;      	  							
   149 			}
   175 			}
   150 			break;
   176 			break;
   151 	}
   177 	}
       
   178 OstTraceFunctionExit0( CPTPIPSOCKETHANDLER_RUNL_EXIT );
   152 }
   179 }
   153 
   180 
   154 TInt CPTPIPSocketHandler::RunError(TInt aErr)
   181 TInt CPTPIPSocketHandler::RunError(TInt aErr)
   155 	{
   182 	{
       
   183 	OstTraceFunctionEntry0( CPTPIPSOCKETHANDLER_RUNERROR_ENTRY );
   156 	User ::RequestComplete(iCallerStatus,aErr);
   184 	User ::RequestComplete(iCallerStatus,aErr);
       
   185 	OstTraceFunctionExit0( CPTPIPSOCKETHANDLER_RUNERROR_EXIT );
   157 	return KErrNone;
   186 	return KErrNone;
   158 	}
   187 	}
   159 
   188 
   160 
   189 
   161 
   190 
   162 void CPTPIPSocketHandler::DoCancel()
   191 void CPTPIPSocketHandler::DoCancel()
   163 	{
   192 	{
       
   193 	OstTraceFunctionEntry0( CPTPIPSOCKETHANDLER_DOCANCEL_ENTRY );
   164 	if(iState==EReadState)	
   194 	if(iState==EReadState)	
   165 	Socket().CancelRecv();
   195 	Socket().CancelRecv();
   166 	else if(iState==EWriteState)
   196 	else if(iState==EWriteState)
   167 	Socket().CancelWrite();	
   197 	Socket().CancelWrite();	
   168 	}
   198 	OstTraceFunctionExit0( CPTPIPSOCKETHANDLER_DOCANCEL_EXIT );
   169 
   199 	}
   170 
   200 
   171 
   201 
   172 
   202 
   173 
   203 
       
   204