testexecmgmt/ucc/Source/hacontroller/CSvcHacontroller.cpp
changeset 0 3da2a79470a7
--- /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;
+}
+