testexecmgmt/ucc/Source/Uccs.v2/ServiceStubs/Ppp/CPppControllerStub.cpp
changeset 0 3da2a79470a7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecmgmt/ucc/Source/Uccs.v2/ServiceStubs/Ppp/CPppControllerStub.cpp	Mon Mar 08 15:04:18 2010 +0800
@@ -0,0 +1,364 @@
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   
+* System Includes
+*
+*/
+
+
+
+
+#include <assert.h>
+
+/*******************************************************************************
+ *
+ * Local Includes
+ *
+ ******************************************************************************/
+#include "strncpynt.h"
+#include "../../Core/UCCS_ServiceValues.h"
+#include "../../Core/UCCS_ErrorCodes.h"
+#include "CPppControllerStub.h"
+#include "CCPppcontroller.h"
+
+
+/*******************************************************************************
+ *
+ * Definitions
+ *
+ ******************************************************************************/
+
+/*******************************************************************************
+ *
+ * Macro Functions
+ *
+ ******************************************************************************/
+																		
+/*******************************************************************************
+ *
+ * Constructor / Destructor
+ *
+ ******************************************************************************/
+CPppControllerServiceStub::CPppControllerServiceStub()
+{
+	iClientPppController = new CCPppcontroller();
+	assert( iClientPppController != NULL );
+}
+
+
+CPppControllerServiceStub::~CPppControllerServiceStub()
+{
+	delete iClientPppController;
+}
+
+
+/*******************************************************************************
+ *
+ * Startup / Shutdown
+ *
+ ******************************************************************************/
+int CPppControllerServiceStub::StartUccsService( char *aHostName, int *aErrorCode, int *aUnused )
+{
+	int client_stub_error;
+	
+	// check params
+	assert( aHostName != NULL );
+	assert( aErrorCode != NULL );
+	*aErrorCode = 0;
+	
+	// connect to the remote service
+	client_stub_error = iClientPppController->Connect( aHostName );
+
+	// return the result
+	return client_stub_error;
+
+}
+
+
+int CPppControllerServiceStub::StopUccsService( int *aErrorCode, int *aUnused )
+{
+	int client_stub_error;
+
+	// check params
+	assert( aErrorCode != NULL );
+	*aErrorCode = 0;
+
+	// shutdown the stub -- force it to close
+	client_stub_error = iClientPppController->Disconnect();
+	
+	// done
+	return client_stub_error;
+}
+
+
+/*******************************************************************************
+ *
+ * IssueCommand
+ *
+ ******************************************************************************/
+CDataRecord* CPppControllerServiceStub::IssueCommand( CDataRecord* aRequest )
+{
+	int i, err, client_stub_error, method_id = -1;
+	char *tmp_string;
+	CDataRecord *request_reply;
+
+	int rv_integer, sarg_integer;
+	TComponentList rv_component_list;
+	TResult rv_result;
+	TVarData rv_var_data;
+	TPppSessionDesc rv_session_desc;
+	TPppSessionConfig sarg_session_config;
+	TStartupInfo sarg_startup_info;
+
+	// check params
+	assert( aRequest != NULL );
+
+	// create a standard reply 
+	request_reply = CreateBaseReply( aRequest );
+	assert( request_reply != NULL );
+
+	// get and check the method_id
+	err = request_reply->GetFieldAsInt( "METHODID", &method_id );
+	if( method_id == -1 ) {
+		UpdateCompletionCode( request_reply, ERR_INVALID_METHOD );
+		return request_reply;
+	}
+
+	// now dispatch and call the appropriate method
+	switch( method_id ) {
+
+	// ss_startuprpcservice
+	case 1:
+
+		// setup the args
+		sarg_startup_info.iEmpty = 0;
+
+		// make the call and update the return value
+		client_stub_error = iClientPppController->ss_startuprpcservice( sarg_startup_info, &rv_integer );
+		UpdateCompletionCode( request_reply, client_stub_error );		
+		if( client_stub_error != ERR_NONE ) {
+			break;
+		}
+
+		// set any return information
+		request_reply->NewField( "RESULT", rv_integer );
+		break;
+
+	// sc_shutdownrpcservice
+	case 2:
+			
+		// extract the parameters
+		GETINTEGERARGUMENT( "FORCE", &sarg_integer, 1, 1, aRequest, request_reply );
+		
+		// make the call and update the return value
+		client_stub_error = iClientPppController->sc_shutdownrpcservice( sarg_integer, &rv_integer );
+		UpdateCompletionCode( request_reply, client_stub_error );
+		if( client_stub_error != ERR_NONE ) {
+			break;
+		}
+
+		// set the return values
+		request_reply->NewField( "RESULT", rv_integer );
+		break;
+
+	// list_devices
+	case 30:
+
+		// make the call and update the return value
+		client_stub_error = iClientPppController->list_devices( &rv_component_list );
+		UpdateCompletionCode( request_reply, client_stub_error );
+		if( client_stub_error != ERR_NONE ) {
+			break;
+		}
+
+		// set the return values
+		request_reply->NewField( "DEVICECOUNT", rv_component_list.TComponentList_len );
+		for( i = 0; i < rv_component_list.TComponentList_len; i++ ) {
+			AddIteratedIntegerFieldName( "DEVICEID", i, (rv_component_list.TComponentList_val)[i], request_reply );
+		}
+		break;		
+
+	// cstr_startpppsession
+	case 31:
+
+		// extract the parameters
+		GETSTRINGARGUMENT( "MADDR", &tmp_string, 1, 0, aRequest, request_reply );
+		STRNCPY_NULL_TERMINATE( sarg_session_config.iMobsterAddress, tmp_string, MAXADDRLEN );
+		GETSTRINGARGUMENT( "MPORT", &tmp_string, 2, 0, aRequest, request_reply );
+		STRNCPY_NULL_TERMINATE( sarg_session_config.iMobsterPort, tmp_string, MAXPORTLEN );
+		GETINTEGERARGUMENT( "MTID", &(sarg_session_config.iMTID), 3, 0, aRequest, request_reply );
+		GETSTRINGARGUMENT( "CONFIG", &tmp_string, 4, 0, aRequest, request_reply );
+		STRNCPY_NULL_TERMINATE( sarg_session_config.iSessionConfiguration, tmp_string, MAXCONFIGURATIONLENGTH );
+
+		// make the call and update the return value
+		client_stub_error = iClientPppController->cstr_startpppsession( sarg_session_config, &rv_result );
+		UpdateCompletionCode( request_reply, client_stub_error );
+		if( client_stub_error != ERR_NONE ) {
+			break;
+		}
+
+		// set the result values
+		request_reply->NewField( "RESULT", rv_result.iStandardResult );
+		request_reply->NewField( "RESULT_DETAIL", rv_result.iExtendedCode );
+		request_reply->NewField( "RESULT_SYSTEM_ERROR", rv_result.iSystemError );		
+		break;
+		
+
+	// dstr_removepppsession
+	case 32:
+
+		// extract the parameters
+		GETINTEGERARGUMENT( "SID", &sarg_integer, 1, 0, aRequest, request_reply );
+
+		// make the call and update the return value
+		client_stub_error = iClientPppController->dstr_removepppsession( sarg_integer, &rv_result );
+		UpdateCompletionCode( request_reply, client_stub_error );
+		if( client_stub_error != ERR_NONE ) {
+			break;
+		}
+
+		// set the result values
+		request_reply->NewField( "RESULT", rv_result.iStandardResult );
+		request_reply->NewField( "RESULT_DETAIL", rv_result.iExtendedCode );
+		request_reply->NewField( "RESULT_SYSTEM_ERROR", rv_result.iSystemError );		
+		break;
+
+
+	// killsession
+	case 5:
+
+		// extract the parameters
+		GETINTEGERARGUMENT( "SID", &sarg_integer, 1, 0, aRequest, request_reply );
+
+		// make the call and update the return value
+		client_stub_error = iClientPppController->killsession( sarg_integer, &rv_result );
+		UpdateCompletionCode( request_reply, client_stub_error );
+		if( client_stub_error != ERR_NONE ) {
+			break;
+		}
+
+		// set the result values
+		request_reply->NewField( "RESULT", rv_result.iStandardResult );
+		request_reply->NewField( "RESULT_DETAIL", rv_result.iExtendedCode );
+		request_reply->NewField( "RESULT_SYSTEM_ERROR", rv_result.iSystemError );		
+		break;
+
+
+	// stopsession
+	case 6:
+
+		// extract the parameters
+		GETINTEGERARGUMENT( "SID", &sarg_integer, 1, 0, aRequest, request_reply );
+
+		// make the call and update the return value
+		client_stub_error = iClientPppController->stopsession( sarg_integer, &rv_result );
+		UpdateCompletionCode( request_reply, client_stub_error );
+		if( client_stub_error != ERR_NONE ) {
+			break;
+		}
+
+		// set the result values
+		request_reply->NewField( "RESULT", rv_result.iStandardResult );
+		request_reply->NewField( "RESULT_DETAIL", rv_result.iExtendedCode );
+		request_reply->NewField( "RESULT_SYSTEM_ERROR", rv_result.iSystemError );		
+		break;
+
+
+	// getsessioninfo
+	case 7:
+
+		// extract the parameters
+		GETINTEGERARGUMENT( "SID", &sarg_integer, 1, 0, aRequest, request_reply );
+
+		// make the call and update the return value
+		client_stub_error = iClientPppController->getsessioninfo( sarg_integer, &rv_session_desc );
+		UpdateCompletionCode( request_reply, client_stub_error );
+		if( client_stub_error != ERR_NONE ) {
+			break;
+		}
+
+		// set the result values
+		request_reply->NewField( "RESULT", rv_session_desc.iErrorCode );
+		request_reply->NewField( "RESULT_DETAIL", rv_session_desc.iErrorDetail );
+		request_reply->NewField( "SESSION_MADDR", rv_session_desc.iConfig.iMobsterAddress );
+		request_reply->NewField( "SESSION_MPORT", rv_session_desc.iConfig.iMobsterPort );
+		request_reply->NewField( "SESSION_MTID",	rv_session_desc.iConfig.iMTID );
+		request_reply->NewField( "SESSION_CONFIG",	rv_session_desc.iConfig.iSessionConfiguration );
+		request_reply->NewField( "SESSION_STATUS",	rv_session_desc.iSessionStatus );
+		request_reply->NewField( "SESSION_INTERFACE_NAME",	rv_session_desc.iInterfaceName );
+		request_reply->NewField( "SESSION_LOCAL_IP_ADDRESS",	IntToAddress(rv_session_desc.iLocalIPAddress) );
+		request_reply->NewField( "SESSION_REMOTE_IP_ADDRESS",	IntToAddress(rv_session_desc.iRemoteIPAddress) );
+		request_reply->NewField( "SESSION_PROCESS_STATUS",	rv_session_desc.iProcessStatus );
+		request_reply->NewField( "SESSION_PROCESS_EXIT_REASON",	rv_session_desc.iProcessExitReason );
+		request_reply->NewField( "SESSION_PROCESS_EXIT_CODE",	rv_session_desc.iProcessExitCode );
+		break;
+
+
+	// getppplog
+	case 8:
+
+		// extract the parameters
+		GETINTEGERARGUMENT( "SID", &sarg_integer, 1, 0, aRequest, request_reply );
+
+		// make the call and update the return value
+		client_stub_error = iClientPppController->getppplog( sarg_integer, &rv_var_data );
+		UpdateCompletionCode( request_reply, client_stub_error );
+		if( client_stub_error != ERR_NONE ) {
+			break;
+		}
+
+		// set the result values
+		request_reply->NewField( "LOG",	rv_var_data.TVarData_val );
+		request_reply->NewField( "LOG_LENGTH", (rv_var_data.TVarData_len - 1));
+
+		// free the memory (if any was allocated)
+		if( rv_var_data.TVarData_len > 0 ) {
+			XdrFree( &(rv_var_data.TVarData_val), (int*)&(rv_var_data.TVarData_len) );
+		}
+		break;
+
+
+	// Any other method id results in an invalid method id result
+	default:
+		UpdateCompletionCode( request_reply, ERR_INVALID_METHOD );
+		break;
+	}
+
+	// everything should be handled above 
+	return request_reply;
+}
+
+
+/*******************************************************************************
+ *
+ * GetLastRPCError()
+ *
+ ******************************************************************************/
+char *CPppControllerServiceStub::GetLastRPCError( int *aIntError )
+{
+	return iClientPppController->GetLastRPCError( aIntError );
+}
+
+
+/*******************************************************************************
+ *
+ * GetStatus()
+ *
+ ******************************************************************************/
+int CPppControllerServiceStub::GetStatus()
+{
+	assert( !"GetStatus() - is not implemented" );
+	return -1;
+}
+