diff -r 000000000000 -r 3da2a79470a7 testexecmgmt/ucc/Source/DynamicsCommandWrapper/CDynamicsCommand.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testexecmgmt/ucc/Source/DynamicsCommandWrapper/CDynamicsCommand.h Mon Mar 08 15:04:18 2010 +0800 @@ -0,0 +1,242 @@ +/* +* 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: +* CDynamicsCommand +* +*/ + + + +#ifndef __CDYNAMICSCOMMAND_H__ +#define __CDYNAMICSCOMMAND_H__ + + +/**************************************************************************************** + * + * System Includes + * + ***************************************************************************************/ +#include +using namespace std; + + +/**************************************************************************************** + * + * Constants + * + ***************************************************************************************/ +#define MAXIMUMERRORSTRINGLENGTH 128 +#define MAXCOMMANDLINE 256 +#define MAXINTERFACENAME 64 +#define MAXNAILEN 128 +#define MAXINFOLEN 128 +#define MAXERRORSTRING 256 + + +/**************************************************************************************** + * + * Types - General + * + ***************************************************************************************/ +typedef enum { + DC_SUCCESS, + DC_COMMAND_TOOL_NOT_FOUND, + DC_INVALID_ARGUMENTS, + DC_CSH_FAILED, + DC_CALL_FAILED, + DC_EXECUTE_FAILED, + DC_UNEXPECTED_OUTPUT, +} TDynamicsCallResult; + +typedef enum { + DCF_UNKNOWN, + DCF_FUNCTION_NOT_PERMITTED, + DCF_AGENT_UNREACHABLE +} TDynamicsCallFailedReason; + +typedef struct { + TDynamicsCallResult iResult; + int iErrorCode; + int iErrorDetail; + char iDynamicsErrorString[MAXIMUMERRORSTRINGLENGTH]; +} TDynamicsCallInfo; + + +/**************************************************************************************** + * + * Types - For Foreign Agent Calls + * + ***************************************************************************************/ +typedef struct { + int iTunnelCount; + int iPendingRegistrationRequests; + int iRequestsRejected; + int iRequestsAccepted; + int iReplysAccepted; + int iReplysRejected; + int iDiscardedUnknownExtension; + int iDiscardedMalformed; + int iDiscardedVendor; + int iAdvertisementsSent; +} TForeignAgentStatusInfo; + +typedef struct { + unsigned int iMobileNodeAddress; + unsigned int iHomeAgentAddress; + int iTunnelID; +} TTunnelID; + +typedef struct { + unsigned int iMobileNodeAddress; + unsigned int iCareofAddress; + unsigned int iHomeAgentAddress; + int iPrivateHomeAgentID; + int iCreationTime; + int iExpirationTime; + int iRefreshTime; + int iLastTimestamp; + int iSPI; + int iTimeout; +} TForeignAgentTunnelInfo; + + +/**************************************************************************************** + * + * Types - For Home Agent Calls + * + ***************************************************************************************/ +typedef struct { + int iTunnelCount; + int iRequestsRejected; + int iRequestsAccepted; + int iDiscardedUnknownExtension; + int iDiscardedMalformed; + int iDiscardedVendor; + int iAdvertisementsSent; +} THomeAgentStatusInfo; + +typedef struct { + unsigned int iMobileNodeAddress; + unsigned int iCareofAddress; + unsigned int iHomeAgentAddress; + int iCreationTime; + int iExpirationTime; + int iRefreshTime; + int iLastTimestamp; + int iSPI; + int iTimeout; +} THomeAgentTunnelInfo; + + +/**************************************************************************************** + * + * Types - For Mobile Node Agent Calls + * + ***************************************************************************************/ +typedef struct { + int iConnected; + int iTunnelUp; + unsigned int iLocalAddress; + unsigned int iColocatedAddress; + unsigned int iForeignAgentAddress; + unsigned int iHomeAgentAddress; + unsigned int iHomeAddress; + int iLifetimeRemaining; + int iTunnelMode; + int iSecondsSinceLastRequest; + int iSecondsSinceLastReply; + int iReplyCode; + char iInfoText[MAXINFOLEN]; + char iLastErrorString[MAXERRORSTRING]; +} TMobileNodeAgentStatusInfo; + +typedef struct { + unsigned int iForeignAgentAddress; + char iInterfaceName[MAXINTERFACENAME]; + int iPriority; + int iInUse; + int iInterfaceIndex; + int iLastAdvertisement; + char iNAI[MAXNAILEN]; +} TMobileNodeForeignAgentInfo; + + +/**************************************************************************************** + * + * CDynamicsCommand Class Definition + * + ***************************************************************************************/ +class CDynamicsCommand +{ +public: + // General + CDynamicsCommand(); + ~CDynamicsCommand(); + void SetPipePath( string aPipePath ); + void SetTimeout( int aTimeoutInMilliseconds ); + + // Foreign Agent Calls + TDynamicsCallInfo ForeignAgentGetStatus( TForeignAgentStatusInfo *aForeignAgentInfo ); + TDynamicsCallInfo ForeignAgentDestroyTunnel( unsigned int aMobileNodeAddress ); + TDynamicsCallInfo ForeignAgentGetTunnels( int *aTunnelCount, TTunnelID *aTunnelIDArray ); + TDynamicsCallInfo ForeignAgentGetTunnelInfo( unsigned int aMobileNodeAddress, TForeignAgentTunnelInfo *aTunnelInfo ); + + // Home Agent Calls + TDynamicsCallInfo HomeAgentGetStatus( THomeAgentStatusInfo *aHomeAgentInfo ); + TDynamicsCallInfo HomeAgentDestroyTunnel( unsigned int aMobileNodeAddress , unsigned int aHomeAgentAddress = 0, int aTunnelID = 0); + TDynamicsCallInfo HomeAgentGetTunnels( int *aTunnelCount, unsigned int *aMobileNodeAddresses ); + TDynamicsCallInfo HomeAgentGetTunnelInfo( unsigned int aMobileNodeAddress, THomeAgentTunnelInfo *aTunnelInfo ); + + // Mobile Node Calls + TDynamicsCallInfo MobileNodeAgentGetCareofAddress( struct in_addr *aCareofAddress ); + TDynamicsCallInfo MobileNodeAgentGetStatus( TMobileNodeAgentStatusInfo *aMobileNodeAgentInfo ); + TDynamicsCallInfo MobileNodeAgentConnect(); + TDynamicsCallInfo MobileNodeAgentDisconnect(); + TDynamicsCallInfo MobileNodeAgentConfirm(); + TDynamicsCallInfo MobileNodeAgentRescan(); + TDynamicsCallInfo MobileNodeAgentSetPolicy( int aPolicyVector ); + TDynamicsCallInfo MobileNodeAgentGetPolicy( int *aPolicyVector ); + TDynamicsCallInfo MobileNodeAgentGetForeignAgentList( int *aListCount, TMobileNodeForeignAgentInfo *aForeignAgentInfoList ); + TDynamicsCallInfo MobileNodeAgentGetForeignAgentInfo( unsigned int aFAAddress, TMobileNodeForeignAgentInfo *aForeignAgentInfo ); + +private: + // Helper functions + TDynamicsCallInfo DynamicsCall( char *aExecutable, char *aCommand, char *aParams, string *aStandardOutput, + string *aStandardError ); + + int GetIntegerEntry( const char *aOutput, const char *aLabel, int *aValue ); + int GetDateEntry( const char *aOutput, const char *aLabel, int *aValue ); + int GetAddressEntry( const char *aOutput, const char *aLabel, unsigned int *aValue ); + int GetPolicyEntry( const char *aOutput, const char *aLabel, int *aValue ); + int GetStringEntry( const char *aOutput, const char *aLabel, char *aValue, int aBufferSize ); + + TDynamicsCallFailedReason GetCallFailedReason( const char *aOutput ); + + TDynamicsCallInfo ParseForeignAgentListOutput( string aOutput, int aListSize, TTunnelID *aTunnelIDArray, int *aListCount ); + TDynamicsCallInfo ParseHomeAgentListOutput( string aOutput, int aListSize, unsigned int *aTunnelList, int *aListCount ); + TDynamicsCallInfo ParseMobileNodeAgentListOutput( string aOutput, int aListSize, TMobileNodeForeignAgentInfo *aForeignAgentList, + int *aListCount ); + + int ConvertTunnelStringToInteger( char *aTunnelMode, int *aValue ); + int CheckMatchAsBoolean( char *aInput, char *aTrue, int *aValue ); + int strstrbeforedelim( const char *aSearchSpace, const char *aToken, char aDelim ); + + // Members + int iTimeout; + string iPipePath; + char iCommandLine[MAXCOMMANDLINE]; +}; + + +#endif //__CDYNAMICSCOMMAND_H__