testexecmgmt/ucc/Source/facontroller/CSvcFacontroller.cpp
changeset 0 3da2a79470a7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecmgmt/ucc/Source/facontroller/CSvcFacontroller.cpp	Mon Mar 08 15:04:18 2010 +0800
@@ -0,0 +1,267 @@
+/*
+* 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 06 12:02:04 2003
+* System Includes
+*
+*/
+
+
+
+
+
+#include <stdio.h>
+
+
+/****************************************************************************************
+ * 
+ * Local Includes
+ * 
+ ***************************************************************************************/
+#include "CSvcFacontroller.h"
+#include "facontroller.h"
+#include "standard_service_manager.h"
+
+
+/****************************************************************************************
+ * 
+ * File-scope variables
+ * 
+ ***************************************************************************************/
+static TStartupInfo iStartupInfo;
+static CIntegerAllocator *iIntegerAllocator;
+static CComponentManager<CSFacontroller> *iComponentManager;
+
+
+/****************************************************************************************
+ * 
+ * Implementation
+ * 
+ ***************************************************************************************/
+
+
+/****************************************************************************************
+ * 
+ * PUBLIC: GetInstanceKeyFromArgs
+ * 
+ ***************************************************************************************/
+int CSvcFacontroller::GetInstanceKeyFromArgs( int aMethod, void *aArgs )
+{
+	int rv;
+	int *integer_ik;
+	TFaTunnelID *tunnel_ik;
+	TOptionDesc *option_ik;
+	TTimeoutRequest *timeout_ik;
+	TStartAgentRequest *startup_ik;
+	TGetTunnelRequest *get_tunnel_req_ik;
+
+	switch( aMethod ) {
+
+	// Methods with a single integer argument that is the key
+	case DSTR_REMOVEAGENT:
+	case STOPMOBILEAGENT:
+	case GETMOBILEAGENTSTATUS:
+	case GETSTATUS:
+	case LISTTUNNELS:
+		integer_ik = (int*)aArgs;
+		rv = *integer_ik;
+		break;
+
+	// Methods with TOptionDesc 
+	case SETSINGLEOPTION:
+	case REMOVESINGLEOPTION:
+	case ADDLISTOPTION:
+	case REMOVELISTOPTION:
+		option_ik = (TOptionDesc*)aArgs;
+		rv = option_ik->iAgentID;
+		break;
+
+	// TStartAgentRequest
+	case STARTMOBILEAGENT:
+	  startup_ik = (TStartAgentRequest*)aArgs;
+	  rv = startup_ik->iAgentID;
+	  break;
+
+	// Tunnel ID
+	case DESTROYTUNNELID:
+		tunnel_ik = (TFaTunnelID*)aArgs;
+		rv = tunnel_ik->iAgentID;
+		break;
+
+	// Timeout
+	case SETTIMEOUT:
+		timeout_ik = (TTimeoutRequest*)aArgs;
+		rv = timeout_ik->iAgentID;
+		break;
+
+	// TGetTunnelRequest
+	case GETTUNNELINFO:
+		get_tunnel_req_ik = (TGetTunnelRequest*)aArgs;
+		rv = get_tunnel_req_ik->iAgentID;
+		break;
+		
+	// error
+	default:
+		rv = ERR_INVALID_METHOD;
+		break;
+	}
+	return rv;
+}
+
+
+/****************************************************************************************
+ * 
+ * PUBLIC: SetError
+ * 
+ ***************************************************************************************/
+int CSvcFacontroller::SetError( int aMethod, void *aArgs, int aError )
+{
+	int rv = ERR_NONE;
+	TResult *result_rv;
+	TComponentList *result_cl;
+	TFaStatusInfo *result_fs;
+	TFaTunnelList *result_tl;
+	TFaTunnelInfo *result_ti;
+
+	switch( aMethod ) {
+
+	// TResult
+	case CSTR_CREATEAGENT:
+	case STARTMOBILEAGENT:
+	case STOPMOBILEAGENT:
+	case SETSINGLEOPTION:
+	case REMOVESINGLEOPTION:
+	case ADDLISTOPTION:
+	case REMOVELISTOPTION:
+	case DESTROYTUNNELID:
+		SET_ERROR_CODE( TResult, iServiceResult, result_rv );
+		break;
+
+	// TComponent
+	case LIST_DEVICES:
+		SET_LIST_ERROR_CODE( TComponentList, result_cl );
+		break;
+
+	// TFaStatusInfo
+	case GETSTATUS:
+		SET_ERROR_CODE( TFaStatusInfo, iCallResult.iServiceResult, result_fs );
+		break;
+
+	// TFaTunnelList
+	case LISTTUNNELS:
+		SET_LIST_ERROR_CODE( TFaTunnelList, result_tl );
+		break;
+
+	// TFaTunnelInfo 
+	case GETTUNNELINFO:
+		SET_ERROR_CODE( TFaTunnelInfo, iCallResult.iServiceResult, result_ti );
+		break;
+
+	// error
+	default:
+		rv = ERR_INVALID_METHOD;
+		break;
+	}
+
+	// done
+	return rv;
+}
+
+
+/****************************************************************************************
+ * 
+ * PUBLIC: GetError - Currently this methods will only ever be caleld for CSTR_CREATEAGENT
+ * 
+ ***************************************************************************************/
+int CSvcFacontroller::GetError( int aMethod, void *aArgs )
+{
+	TResult *result;
+
+	// check assumption
+	assert( aMethod == CSTR_CREATEAGENT );
+
+	// return error code
+	result = (TResult*)aArgs;
+	return result->iServiceResult;
+}
+
+
+/****************************************************************************************
+ * 
+ * PUBLIC: StartRPCService
+ * 
+ ***************************************************************************************/
+int CSvcFacontroller::StartRPCService( CComponentManager<CSFacontroller> *aComponentManager, void *aArg )
+{
+  int err;
+
+  // save the passed args
+  iStartupInfo = *((TStartupInfo*)aArg);
+  
+  // create the component manager
+  assert( iComponentManager == NULL );
+  iComponentManager = aComponentManager;
+  
+  // setup the integer allocator
+  iIntegerAllocator = new CIntegerAllocator();
+  assert( iIntegerAllocator != NULL );
+  err = iIntegerAllocator->AddToIntegerPool( iStartupInfo.iStartHostAddressRange, iStartupInfo.iStopHostAddressRange );
+  if( err == -1 ) {
+    delete iIntegerAllocator;
+    iIntegerAllocator = NULL;
+    return ERR_INTEGER_ALLOCATOR_SETUP_ERROR;
+  }
+  return ERR_NONE;
+}
+
+
+/****************************************************************************************
+ * 
+ * PUBLIC: StopRPCService
+ * 
+ ***************************************************************************************/
+int CSvcFacontroller::StopRPCService()
+{
+  // cleanup the integer allocator
+  delete iIntegerAllocator;
+  iIntegerAllocator = NULL;
+
+  // cleanup the component manager (stubs do the deletion)
+  iComponentManager = NULL;
+  return ERR_NONE;
+}
+
+
+/****************************************************************************************
+ * 
+ * PUBLIC: GetStartupInfo
+ * 
+ ***************************************************************************************/
+TStartupInfo CSvcFacontroller::GetStartupInfo()
+{
+	return iStartupInfo;
+}
+
+
+/****************************************************************************************
+ * 
+ * PUBLIC: GetIntegerAllocator
+ * 
+ ***************************************************************************************/
+CIntegerAllocator *CSvcFacontroller::GetIntegerAllocator()
+{
+  return iIntegerAllocator;
+}