/*
 * Copyright (c) 2019, Infosys Limited.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef __UEContextManager__
#define __UEContextManager__
/******************************************************
* uEContextManager.h
 * This is an auto generated file.
 * Please do not edit this file.
 * All edits to be made through template source file
 * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.h.tt>
 ***************************************/
#include "memPoolManager.h"

namespace mme
{
	class UEContext;

	class UEContextManager
	{
	public:
		/****************************************
		* UEContextManager
		*  constructor
		****************************************/
		UEContextManager(int numOfBlocks);
		
		/****************************************
		* UEContextManager
		*    Destructor
		****************************************/
		~UEContextManager();
		
		/******************************************
		 * getUEContext
		 *  get UEContext data block
		 ******************************************/
		UEContext* allocateUEContext();
		
		/******************************************
		 * deleteUEContext
		 *  deallocate a UEContext data block
		 ******************************************/
		void deallocateUEContext(UEContext* UEContextp );
	
	private:
		cmn::memPool::MemPoolManager<UEContext> poolManager_m;
	};
};

#endif
		
		
