diff -r 000000000000 -r 3da2a79470a7 testexecmgmt/ucc/Source/Uccs.v2/ServiceStubs/Ppp/CPppControllerStub.cpp --- /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 + +/******************************************************************************* + * + * 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; +} +