--- /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 <assert.h>
+
+
+/*******************************************************************************
+ *
+ * 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
+
+}