diff -r 000000000000 -r 3da2a79470a7 testexecmgmt/ucc/Source/Uccs.v2/ServiceStubs/UuInterface/CUuinterfaceStub.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testexecmgmt/ucc/Source/Uccs.v2/ServiceStubs/UuInterface/CUuinterfaceStub.cpp Mon Mar 08 15:04:18 2010 +0800 @@ -0,0 +1,533 @@ +/* +* 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 "CUuinterfaceStub.h" +#include "CCUuinterface.h" +#include "../../Core/UCCS_ServiceValues.h" +#include "../../Core/UCCS_ErrorCodes.h" + + +/******************************************************************************* + * + * Definitions + * + ******************************************************************************/ + +/******************************************************************************* + * + * Macro Functions + * + ******************************************************************************/ + +/******************************************************************************* + * + * Constructor / Destructor + * + ******************************************************************************/ +CUuinterfaceStub::CUuinterfaceStub() +{ + iUuClient = new CCUuinterface(); + assert( iUuClient != NULL ); +} + + +CUuinterfaceStub::~CUuinterfaceStub() +{ + delete iUuClient; +} + + +/******************************************************************************* + * + * Startup / Shutdown + * + ******************************************************************************/ +int CUuinterfaceStub::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 = iUuClient->Connect( aHostName ); + + // return the result + return client_stub_error; +} + + +int CUuinterfaceStub::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 = iUuClient->Disconnect(); + + // done + return client_stub_error; +} + + +/******************************************************************************* + * + * IssueCommand + * + ******************************************************************************/ +CDataRecord* CUuinterfaceStub::IssueCommand( CDataRecord* aRequest ) +{ + int call_result, err, client_stub_error, method_id = -1; + + int value_int, value_frac, sigma_int, sigma_frac, cor_int, cor_frac; + int max_value_int, max_value_frac; + int source_port, destination_port; + char *source_address, *destination_address; + char *protocol; + + CDataRecord *request_reply; + + TStartupInfo sarg_startup_info; + int rv_integer, sarg_integer; + + TResult rv; + TComponentList rv_component_list; + + struct TConfigValue val; + + // 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: + + // extract the parameters + sarg_startup_info.iEmpty = 0; + + // make the call and update the return value + client_stub_error = iUuClient->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 = iUuClient->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 = iUuClient->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( "COUNT", rv_component_list.TComponentList_len ); + assert ( rv_component_list.TComponentList_len== 0 ); + break; + + // st_setdelay + case 3: + // Extract the parameters + GETSTRINGARGUMENT( "SRC", &source_address, 1, 0, aRequest, request_reply ); + GETSTRINGARGUMENT( "DST", &destination_address, 2, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "SRCPORT", &source_port, 3, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "DSTPORT", &destination_port, 4, 1, aRequest, request_reply ); + GETSTRINGARGUMENT( "PROTOCOL", &protocol, 5, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "DELAYI", &value_int, 6, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "DELAYF", &value_frac, 7, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "SIGMAI", &sigma_int, 8, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "SIGMAF", &sigma_frac, 9, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "CORRI", &cor_int, 7, 10, aRequest, request_reply ); + GETINTEGERARGUMENT( "CORRF", &cor_frac, 11, 1, aRequest, request_reply ); + + // Create the config values stub + //setPortValues ( &source_port, &destination_port ); + CreateConfigValue( &val, + source_address, destination_address, + protocol, + source_port, destination_port, + value_int, value_frac, + sigma_int, sigma_frac, + cor_int, cor_frac, + 0,0,0,0 ); + + // Make the call and update the return values + call_result = iUuClient->st_setdelay( val, &rv ); + UpdateCompletionCode( request_reply, call_result ); + if( call_result != ERR_NONE ) { + break; + } + + // Set the return values + request_reply->NewField( "RESULT", rv.iStandardResult ); + request_reply->NewField( "RESULT_DETAIL", rv.iExtendedCode ); + request_reply->NewField( "RESULT_SYSTEM_ERROR", rv.iSystemError ); + + break; + + // st_setdroppercentage + case 4: + //Extract the parameters + GETSTRINGARGUMENT( "SRC", &source_address, 1, 0, aRequest, request_reply ); + GETSTRINGARGUMENT( "DST", &destination_address, 2, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "SRCPORT", &source_port, 3, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "DSTPORT", &destination_port, 4, 1, aRequest, request_reply ); + GETSTRINGARGUMENT( "PROTOCOL", &protocol, 5, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "DROPI", &value_int, 6, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "DROPF", &value_frac, 7, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "CORRI", &cor_int, 8, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "CORRF", &cor_frac, 9, 1, aRequest, request_reply ); + + // Create the config values stub + //setPortValues ( &source_port, &destination_port ); + CreateConfigValue( &val, + source_address, destination_address, + protocol, + source_port, destination_port, + value_int, value_frac, + 0,0, + cor_int, cor_frac, + 0,0,0,0 ); + + // Make the call and update the return values + call_result = iUuClient->st_setdroppercentage( val, &rv ); + UpdateCompletionCode( request_reply, call_result ); + if( call_result != ERR_NONE ) { + break; + } + + // Set the return values + request_reply->NewField( "RESULT", rv.iStandardResult ); + request_reply->NewField( "RESULT_DETAIL", rv.iExtendedCode ); + request_reply->NewField( "RESULT_SYSTEM_ERROR", rv.iSystemError ); + + break; + + //st_setduplicatepercentage + case 5: + //Extract the parameters + GETSTRINGARGUMENT( "SRC", &source_address, 1, 0, aRequest, request_reply ); + GETSTRINGARGUMENT( "DST", &destination_address, 2, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "SRCPORT", &source_port, 3, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "DSTPORT", &destination_port, 4, 1, aRequest, request_reply ); + GETSTRINGARGUMENT( "PROTOCOL", &protocol, 5, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "DUPI", &value_int, 6, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "DUPF", &value_frac, 7, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "CORRI", &cor_int, 8, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "CORRF", &cor_frac, 9, 1, aRequest, request_reply ); + + // Create the config values stub + //setPortValues ( &source_port, &destination_port ); + CreateConfigValue( &val, + source_address, destination_address, + protocol, + source_port, destination_port, + value_int, value_frac, + 0,0, + cor_int, cor_frac, + 0,0,0,0 ); + + // Make the call and update the return values + call_result = iUuClient->st_setduplicatepercentage( val, &rv ); + UpdateCompletionCode( request_reply, call_result ); + if( call_result != ERR_NONE ) { + break; + } + + // Set the return values + request_reply->NewField( "RESULT", rv.iStandardResult ); + request_reply->NewField( "RESULT_DETAIL", rv.iExtendedCode ); + request_reply->NewField( "RESULT_SYSTEM_ERROR", rv.iSystemError ); + + break; + + // st_setbandwidth + case 6: + //Extract the parameters + GETSTRINGARGUMENT( "SRC", &source_address, 1, 0, aRequest, request_reply ); + GETSTRINGARGUMENT( "DST", &destination_address, 2, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "SRCPORT", &source_port, 3, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "DSTPORT", &destination_port, 4, 1, aRequest, request_reply ); + GETSTRINGARGUMENT( "PROTOCOL", &protocol, 5, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "BWI", &value_int, 6, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "BWF", &value_frac, 7, 1, aRequest, request_reply ); + + // Create the config values stub + //setPortValues ( &source_port, &destination_port ); + CreateConfigValue( &val, + source_address, destination_address, + protocol, + source_port, destination_port, + value_int, value_frac, + 0,0,0,0,0,0,0,0 ); + + // Make the call and update the return values + call_result = iUuClient->st_setbandwidth( val, &rv ); + UpdateCompletionCode( request_reply, call_result ); + if( call_result != ERR_NONE ) { + break; + } + + // Set the return values + request_reply->NewField( "RESULT", rv.iStandardResult ); + request_reply->NewField( "RESULT_DETAIL", rv.iExtendedCode ); + request_reply->NewField( "RESULT_SYSTEM_ERROR", rv.iSystemError ); + + break; + + // st_setdrd + case 7: + //Extract the parameters + GETSTRINGARGUMENT( "SRC", &source_address, 1, 0, aRequest, request_reply ); + GETSTRINGARGUMENT( "DST", &destination_address, 2, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "SRCPORT", &source_port, 3, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "DSTPORT", &destination_port, 4, 1, aRequest, request_reply ); + GETSTRINGARGUMENT( "PROTOCOL", &protocol, 5, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "MINI", &value_int, 6, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "MINF", &value_frac, 7, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "MAXI", &max_value_int, 8, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "MAXF", &max_value_frac, 9, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "CONGI", &cor_int, 10, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "CONGF", &cor_frac, 11, 1, aRequest, request_reply ); + + // Create the config values stub + //setPortValues ( &source_port, &destination_port ); + CreateConfigValue( &val, + source_address, destination_address, + protocol, + source_port, destination_port, + value_int, value_frac, + 0,0,0,0, + max_value_int, max_value_frac, + cor_int, cor_frac ); + + // Make the call and update the return values + call_result = iUuClient->st_setdrd( val, &rv ); + UpdateCompletionCode( request_reply, call_result ); + if( call_result != ERR_NONE ) { + break; + } + + // Set the return values + request_reply->NewField( "RESULT", rv.iStandardResult ); + request_reply->NewField( "RESULT_DETAIL", rv.iExtendedCode ); + request_reply->NewField( "RESULT_SYSTEM_ERROR", rv.iSystemError ); + + break; + + // st_clearsettings + case 8: + //Extract the parameters + GETSTRINGARGUMENT( "SRC", &source_address, 1, 0, aRequest, request_reply ); + GETSTRINGARGUMENT( "DST", &destination_address, 2, 0, aRequest, request_reply ); + GETINTEGERARGUMENT( "SRCPORT", &source_port, 3, 1, aRequest, request_reply ); + GETINTEGERARGUMENT( "DSTPORT", &destination_port, 4, 1, aRequest, request_reply ); + GETSTRINGARGUMENT( "PROTOCOL", &protocol, 5, 1, aRequest, request_reply ); + + // Create the config values stub + //setPortValues ( &source_port, &destination_port ); + CreateConfigValue( &val, + source_address, destination_address, + protocol, + source_port, destination_port, + 0,0,0,0,0,0,0,0,0,0 ); + + // Make the call and update the return values + call_result = iUuClient->st_clearsettings( val, &rv ); + UpdateCompletionCode( request_reply, call_result ); + if( call_result != ERR_NONE ) { + break; + } + + // Set the return values + request_reply->NewField( "RESULT", rv.iStandardResult ); + request_reply->NewField( "RESULT_DETAIL", rv.iExtendedCode ); + request_reply->NewField( "RESULT_SYSTEM_ERROR", rv.iSystemError ); + + break; + + // st_stopservice + case 9: + // Make the call and update the return values + call_result = iUuClient->st_stopservice( &rv ); + UpdateCompletionCode( request_reply, call_result ); + if( call_result != ERR_NONE ) { + break; + } + + // Set the return values + request_reply->NewField( "RESULT", rv.iStandardResult ); + request_reply->NewField( "RESULT_DETAIL", rv.iExtendedCode ); + request_reply->NewField( "RESULT_SYSTEM_ERROR", rv.iSystemError ); + + break; + + // st_reset + case 10: + // Make the call and update the return values + call_result = iUuClient->st_reset( &rv ); + UpdateCompletionCode( request_reply, call_result ); + if( call_result != ERR_NONE ) { + break; + } + + // Set the return values + request_reply->NewField( "RESULT", rv.iStandardResult ); + request_reply->NewField( "RESULT_DETAIL", rv.iExtendedCode ); + request_reply->NewField( "RESULT_SYSTEM_ERROR", rv.iSystemError ); + + 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 CUuinterfaceStub::GetStatus() +{ + assert( !"GetStatus() - is not implemented" ); + return -1; +} + + +/******************************************************************************* + * + * GetLastRPCError() + * + ******************************************************************************/ +char *CUuinterfaceStub::GetLastRPCError( int *aIntError ) +{ + return iUuClient->GetLastRPCError( aIntError ); +} + +/******************************************************************************* + * + * CreateConfigValue() + * + ******************************************************************************/ +void CUuinterfaceStub::CreateConfigValue( TConfigValue* aConfigValue, + char* aSrc, char* aDst, + char* aProtocol, + int aSrcPort, int aDstPort, + int aValueIntegerPart, int aValueFractionPart, + int aSigmaIntegerPart, int aSigmaFractionPart, + int aCorrelationIntegerPart, int aCorrelationFractionPart, + int aMaximumValueIntegerPart, int aMaximumValueFractionPart, + int aCongestionIntegerPart, int aCongestionFractionPart ) +{ + int slen; + + // check the params + assert( aSrc != NULL ); + assert( aDst != NULL ); + + // copy the source address + STRNCPY_NULL_TERMINATE( aConfigValue->iSourceAddress, aSrc, X_MAX_ADDRESS_LENGTH); + + // copy the destination address + STRNCPY_NULL_TERMINATE( aConfigValue->iDestinationAddress, aDst, X_MAX_ADDRESS_LENGTH); + + // set the protocol + slen = strlen( aProtocol ); + if( (aProtocol != NULL) && (strnicmp(aProtocol,UDP,slen) == 0) ) { + aConfigValue->iProtocol = X_UDP; + } else { + aConfigValue->iProtocol = X_TCP; + } + + // set all the values + aConfigValue->iSrcPort = aSrcPort; + aConfigValue->iDstPort = aDstPort; + aConfigValue->iValueIntegerPart = aValueIntegerPart; + aConfigValue->iValueFractionPart = aValueFractionPart; + aConfigValue->iSigmaIntegerPart = aSigmaIntegerPart; + aConfigValue->iSigmaFractionPart = aSigmaFractionPart; + aConfigValue->iCorrelationIntegerPart = aCorrelationIntegerPart; + aConfigValue->iCorrelationFractionPart = aCorrelationFractionPart; + aConfigValue->iMaximumValueIntegerPart = aMaximumValueIntegerPart; + aConfigValue->iMaximumValueFractionPart = aMaximumValueFractionPart; + aConfigValue->iCongestionIntegerPart = aCongestionIntegerPart; + aConfigValue->iCongestionFractionPart = aCongestionFractionPart; + + // done + +}