diff -r 000000000000 -r 3da2a79470a7 testexecmgmt/ucc/Source/Uccs.v2/ServiceStubs/Mobster.v2/CMobsterStub.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testexecmgmt/ucc/Source/Uccs.v2/ServiceStubs/Mobster.v2/CMobsterStub.cpp Mon Mar 08 15:04:18 2010 +0800 @@ -0,0 +1,343 @@ +/* +* 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 "../../Core/UCCS_ServiceValues.h" +#include "../../Core/UCCS_ErrorCodes.h" +#include "CMobsterStub.h" +#include "CCMobster.h" + + +/******************************************************************************* + * + * Definitions + * + ******************************************************************************/ + +/******************************************************************************* + * + * Macro Functions + * + ******************************************************************************/ + +/******************************************************************************* + * + * Constructor / Destructor + * + ******************************************************************************/ +CMobsterServiceStub::CMobsterServiceStub() +{ + iClientMobster = new CCMobster(); + assert( iClientMobster != NULL ); +} + + +CMobsterServiceStub::~CMobsterServiceStub() +{ + delete iClientMobster; +} + + +/******************************************************************************* + * + * Startup / Shutdown + * + ******************************************************************************/ +int CMobsterServiceStub::StartUccsService( char *aHostName, int *aErrorInfo, int *aUnused ) +{ + int client_stub_error; + *aErrorInfo = *aUnused = 0; + + // connect the stub to the remote service + client_stub_error = iClientMobster->Connect( aHostName ); + + // return the result + return client_stub_error; +} + + +int CMobsterServiceStub::StopUccsService( int *aErrorInfo, int *aUnused ) +{ + int client_stub_error; + *aErrorInfo = *aUnused = 0; + + // disconnect the stub from the remote service + client_stub_error = iClientMobster->Disconnect(); + + // return the result + return client_stub_error; +} + + +/******************************************************************************* + * + * IssueCommand + * + ******************************************************************************/ +CDataRecord* CMobsterServiceStub::IssueCommand( CDataRecord* aRequest ) +{ + int i, client_result, method_id = -1; + CDataRecord *request_reply; + + char *sarg_string; + int sarg_integer, rv_integer; + TDeviceDesc sarg_devicedesc, rv_devicedesc; + TChannelAddress sarg_channel_address; + TUUAddress sarg_uu_address; + TComponentList rv_component_list; + TVarData rv_vardata; + + // check params + assert( aRequest != NULL ); + + // create a standard reply + request_reply = CreateBaseReply( aRequest ); + assert( request_reply != NULL ); + + // get and check the method_id + 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: + + // extract the parameters + GETINTEGERARGUMENT( "PORT", &(sarg_channel_address.iPort), 1, 0, aRequest, request_reply ); + + // make the call and update the return value + client_result = iClientMobster->ss_startuprpcservice( sarg_channel_address, &rv_integer ); + UpdateCompletionCode( request_reply, client_result ); + if( client_result != ERR_NONE ) { + break; + } + + // set the return values + 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_result = iClientMobster->sc_shutdownrpcservice( sarg_integer, &rv_integer ); + UpdateCompletionCode( request_reply, client_result ); + if( client_result != ERR_NONE ) { + break; + } + + // set the return values + request_reply->NewField( "RESULT", rv_integer ); + break; + + // list_devices + case 9: + + // make the call and update the return value + client_result = iClientMobster->list_devices( &rv_component_list ); + UpdateCompletionCode( request_reply, client_result ); + if( client_result != 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_startdevice + case 3: + + // extract the parameters + GETINTEGERARGUMENT( "DATALINKCONFIG", (int*)&(sarg_devicedesc.iDatalinkConfig), 1, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "FILTERCONFIG", &(sarg_devicedesc.iFilterConfig), 2, 0, aRequest, request_reply ); + + // make the call and update the return value + client_result = iClientMobster->cstr_startdevice( sarg_devicedesc, &rv_integer ); + UpdateCompletionCode( request_reply, client_result ); + if( client_result != ERR_NONE ) { + break; + } + + // set the return values + request_reply->NewField( "RESULT", rv_integer ); + break; + + + // dstr_removedevice + case 7: + + // extract the parameters + GETINTEGERARGUMENT( "DEVICEID", &sarg_integer, 1, 0, aRequest, request_reply ); + + // make the call and update the return value + client_result = iClientMobster->dstr_removedevice( sarg_integer, &rv_integer ); + UpdateCompletionCode( request_reply, client_result ); + if( client_result != ERR_NONE ) { + break; + } + + // set the return values + request_reply->NewField( "RESULT", rv_integer ); + break; + + + // GetDeviceInfo + case 4: + + // extract the parameters + GETINTEGERARGUMENT( "DEVICEID", &sarg_integer, 1, 0, aRequest, request_reply ); + + // make the call and update the return value + client_result = iClientMobster->getdeviceinfo( sarg_integer, &rv_devicedesc ); + UpdateCompletionCode( request_reply, client_result ); + if( client_result != ERR_NONE ) { + break; + } + + // set the return values + request_reply->NewField( "DATALINKCONFIG", rv_devicedesc.iDatalinkConfig ); + request_reply->NewField( "FILTERCONFIG", rv_devicedesc.iFilterConfig ); + request_reply->NewField( "MTID", rv_devicedesc.iMTID ); + request_reply->NewField( "TEID", rv_devicedesc.iTEID ); + request_reply->NewField( "AIR_INPORT", rv_devicedesc.iLocalAirInterfacePort ); + request_reply->NewField( "AIR_OUTADDR", rv_devicedesc.iRemoteAirInterfaceAddress ); + request_reply->NewField( "AIR_OUTPORT", rv_devicedesc.iRemoteAirInterfacePort ); + request_reply->NewField( "DEVICESTATUS", rv_devicedesc.iDeviceStatus ); + request_reply->NewField( "DEVICEEXITREASON", rv_devicedesc.iDeviceExitReason ); + request_reply->NewField( "DEVICEEXITSUBREASON", rv_devicedesc.iDeviceExitSubReason ); + request_reply->NewField( "DEVICEEXITCODE", rv_devicedesc.iDeviceExitDetail ); + break; + + + // getdevicelog + case 5: + + // extract the parameters + GETINTEGERARGUMENT( "DEVICEID", &sarg_integer, 1, 0, aRequest, request_reply ); + + // make the call and update the return value + client_result = iClientMobster->getdevicelog( sarg_integer, &rv_vardata ); + UpdateCompletionCode( request_reply, client_result ); + if( client_result != ERR_NONE ) { + break; + } + + // set the result (this copies) + request_reply->NewField( "DEVICELOG", rv_vardata.TVarData_val ); + request_reply->NewField( "DEVICELOGLENGTH", rv_vardata.TVarData_len ); + + // free the memory (if any was allocated) + if( rv_vardata.TVarData_len > 0 ) { + XdrFree( &(rv_vardata.TVarData_val), (int*)&(rv_vardata.TVarData_len) ); + } + break; + + + // stopdevice + case 6: + + // extract the parameters + GETINTEGERARGUMENT( "DEVICEID", &sarg_integer, 1, 0, aRequest, request_reply ); + + // make the call and update the return value + client_result = iClientMobster->stopdevice( sarg_integer, &rv_integer ); + UpdateCompletionCode( request_reply, client_result ); + if( client_result != ERR_NONE ) { + break; + } + + // set the result + request_reply->NewField( "RESULT", rv_integer ); + break; + + + // setremoteuuaddress + case 10: + + // extract the parameters + GETINTEGERARGUMENT( "DEVICEID", &(sarg_uu_address.iDeviceID), 1, 0, aRequest, request_reply ); + GETSTRINGARGUMENT( "REMOTE_ADDRESS", &(sarg_string), 2, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "REMOTE_PORT", &(sarg_integer), 3, 0, aRequest, request_reply ); + sarg_uu_address.iRemoteAddress = AddressToInt(sarg_string); + sarg_uu_address.iRemotePort = htons(sarg_integer); + + // make the call and update the return value + client_result = iClientMobster->setremoteuuaddress( sarg_uu_address, &rv_integer ); + UpdateCompletionCode( request_reply, client_result ); + if( client_result != ERR_NONE ) { + break; + } + + // set the result + request_reply->NewField( "RESULT", rv_integer ); + 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; +} + + +/******************************************************************************* + * + * GetStatus() + * + ******************************************************************************/ +int CMobsterServiceStub::GetStatus() +{ + assert( !"GetStatus() - is not implemented" ); + return -1; +} + + +/******************************************************************************* + * + * GetLastRPCError() + * + ******************************************************************************/ +char *CMobsterServiceStub::GetLastRPCError( int *aIntError ) +{ + return iClientMobster->GetLastRPCError( aIntError ); +}