--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecmgmt/ucc/Source/hacontroller/CSvcHacontroller.cpp Mon Mar 08 15:04:18 2010 +0800
@@ -0,0 +1,301 @@
+/*
+* 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:
+* This file was autogenerated by rpcgen, but should be modified by the developer.
+* Make sure you don't use the -component_mod flag in future or this file will be overwritten.
+* Mon Oct 13 13:43:15 2003
+* System Includes
+*
+*/
+
+
+
+
+#include <stdio.h>
+#include <math.h>
+
+
+/****************************************************************************************
+ *
+ * Local Includes
+ *
+ ***************************************************************************************/
+#include "CSvcHacontroller.h"
+#include "hacontroller.h"
+#include "standard_service_manager.h"
+
+
+/****************************************************************************************
+ *
+ * Macro Functions
+ *
+ ***************************************************************************************/
+
+
+/****************************************************************************************
+ *
+ * File-scope variables
+ *
+ ***************************************************************************************/
+static TStartupInfo iStartupInfo;
+static CIntegerAllocator *iAliasHostAddressAllocator;
+static CNetworkPartitionManager *iNetworkPartitionManager;
+static CComponentManager<CSHacontroller> *iComponentManager;
+
+/****************************************************************************************
+ *
+ * Implementation
+ *
+ ***************************************************************************************/
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: GetInstanceKeyFromArgs
+ *
+ ***************************************************************************************/
+int CSvcHacontroller::GetInstanceKeyFromArgs( int aMethod, void *aArgs )
+{
+ int rv;
+ int *ik_integer;
+ TOptionDesc *ik_option;
+ THaTunnelID *ik_tunnel_id;
+ TTimeoutRequest *ik_timeout;
+ TGetTunnelRequest *ik_tunnel_info;
+
+ switch( aMethod ) {
+
+ // Methods with an integer arg that is the key
+ case DSTR_REMOVEAGENT:
+ case STARTMOBILEAGENT:
+ case STOPMOBILEAGENT:
+ case GETMOBILEAGENTSTATUS:
+ case GETSTATUS:
+ case LISTTUNNELS:
+ ik_integer = (int*)aArgs;
+ rv = *ik_integer;
+ break;
+
+ // TOptionDesc
+ case SETSINGLEOPTION:
+ case REMOVESINGLEOPTION:
+ case ADDLISTOPTION:
+ case REMOVELISTOPTION:
+ ik_option = (TOptionDesc*)aArgs;
+ rv = ik_option->iAgentID;
+ break;
+
+ // THaTunnelID
+ case DESTROYTUNNELID:
+ ik_tunnel_id = (THaTunnelID*)aArgs;
+ rv = ik_tunnel_id->iAgentID;
+ break;
+
+ // Timeout
+ case SETTIMEOUT:
+ ik_timeout = (TTimeoutRequest*)aArgs;
+ rv = ik_timeout->iAgentID;
+ break;
+
+ // TGetTunnelRequest
+ case GETTUNNELINFO:
+ ik_tunnel_info = (TGetTunnelRequest*)aArgs;
+ rv = ik_tunnel_info->iAgentID;
+ break;
+
+ // Invalid
+ default:
+ rv = ERR_INVALID_METHOD;
+ break;
+ }
+ return rv;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: SetError
+ *
+ ***************************************************************************************/
+int CSvcHacontroller::SetError( int aMethod, void *aArgs, int aError )
+{
+ int rv = ERR_NONE;
+ TResult *rv_result;
+ TComponentList *rv_cl;
+ THaStatus *rv_status;
+ THaTunnelList *rv_tunnellist;
+ THaTunnelInfo *rv_tunnel_info;
+
+ switch( aMethod ) {
+
+ // TComponentList
+ case LIST_DEVICES:
+ SET_LIST_ERROR_CODE( TComponentList, rv_cl );
+ break;
+
+ // TResult
+ case CSTR_CREATEAGENT:
+ case DSTR_REMOVEAGENT:
+ case STARTMOBILEAGENT:
+ case STOPMOBILEAGENT:
+ case SETSINGLEOPTION:
+ case REMOVESINGLEOPTION:
+ case ADDLISTOPTION:
+ case REMOVELISTOPTION:
+ case DESTROYTUNNELID:
+ SET_ERROR_CODE( TResult, iServiceResult, rv_result );
+ break;
+
+ // THaStatus
+ case GETSTATUS:
+ SET_ERROR_CODE( THaStatus, iCallResult.iServiceResult, rv_status );
+ break;
+
+ // THaTunnelList
+ case LISTTUNNELS:
+ SET_LIST_ERROR_CODE( THaTunnelList, rv_tunnellist );
+ break;
+
+ // THaTunnelInfo
+ case GETTUNNELINFO:
+ SET_ERROR_CODE( THaTunnelInfo, iCallResult.iServiceResult, rv_tunnel_info );
+ break;
+
+ // Invalid
+ default:
+ rv = ERR_INVALID_METHOD;
+ break;
+ }
+ return rv;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: GetError
+ *
+ ***************************************************************************************/
+int CSvcHacontroller::GetError( int aMethod, void *aArgs )
+{
+ TResult *result;
+
+ // check assumption
+ assert( (aMethod == CSTR_CREATEAGENT) || (aMethod == DSTR_REMOVEAGENT) );
+
+ // return error code
+ result = (TResult*)aArgs;
+ return result->iServiceResult;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: StartRPCService
+ *
+ ***************************************************************************************/
+int CSvcHacontroller::StartRPCService( CComponentManager<CSHacontroller> *aComponentManager, TStartupInfo *aArg )
+{
+ int err;
+
+ // save the startup info
+ iStartupInfo = *((TStartupInfo*)aArg);
+
+ // store the component manager
+ assert( iComponentManager == NULL );
+ iComponentManager = aComponentManager;
+
+ // setup the home address integer allocator
+ iAliasHostAddressAllocator = new CIntegerAllocator();
+ assert( iAliasHostAddressAllocator != NULL );
+ err = iAliasHostAddressAllocator->AddToIntegerPool( iStartupInfo.iBaseInterfaceStartHostAddressRange,
+ iStartupInfo.iBaseInterfaceStopHostAddressRange );
+ if( err == -1 ) {
+ delete iAliasHostAddressAllocator;
+ iAliasHostAddressAllocator = NULL;
+ return ERR_INTEGER_ALLOCATOR_SETUP_ERROR;
+ }
+
+ // setup the network partition manager
+ iNetworkPartitionManager = new CNetworkPartitionManager();
+ assert( iNetworkPartitionManager != NULL );
+ err = iNetworkPartitionManager->SetConfiguration( iStartupInfo.iVirtualNetworkPrefix,
+ iStartupInfo.iVirtualNetworkPrefixMask,
+ iStartupInfo.iVirtualNetworkAllocSize );
+ if( err == -1 ) {
+ delete iAliasHostAddressAllocator;
+ iAliasHostAddressAllocator = NULL;
+ delete iNetworkPartitionManager;
+ iNetworkPartitionManager = NULL;
+ return ERR_VIRTUAL_NETWORK_CONFIGURATION_ERROR;
+ }
+
+
+ // done - success
+ return ERR_NONE;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: StopRPCService
+ *
+ ***************************************************************************************/
+int CSvcHacontroller::StopRPCService()
+{
+ // delete the host address allocator
+ delete iAliasHostAddressAllocator;
+ iAliasHostAddressAllocator = NULL;
+
+ // delete the subnet address allocator
+ delete iNetworkPartitionManager;
+ iNetworkPartitionManager = NULL;
+
+ // cleanup the component manager (stubs do the deletion)
+ iComponentManager = NULL;
+ return ERR_NONE;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: GetStartupInfo
+ *
+ ***************************************************************************************/
+TStartupInfo CSvcHacontroller::GetStartupInfo()
+{
+ return iStartupInfo;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: GetAliasHostAddressAllocator
+ *
+ ***************************************************************************************/
+CIntegerAllocator *CSvcHacontroller::GetAliasHostAddressAllocator()
+{
+ return iAliasHostAddressAllocator;
+}
+
+
+/****************************************************************************************
+ *
+ * PUBLIC: GetAliasHostAddressAllocator
+ *
+ ***************************************************************************************/
+CNetworkPartitionManager *CSvcHacontroller::GetNetworkPartitionManager()
+{
+ return iNetworkPartitionManager;
+}
+