#region License Information /* HeuristicLab * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL) * * This file is part of HeuristicLab. * * HeuristicLab is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * HeuristicLab is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with HeuristicLab. If not, see . */ #endregion using HeuristicLab.Hive.Server.Core.InternalInterfaces.DataAccess; using HeuristicLab.PluginInfrastructure; using System.Runtime.CompilerServices; using HeuristicLab.Hive.Contracts.Interfaces; using HeuristicLab.Hive.Server.Core; using HeuristicLab.Hive.Server.Core.InternalInterfaces; /// /// The service locator for the server core /// public class ServiceLocator { private static DiscoveryService discoveryService = new DiscoveryService(); private static ITransactionManager transManager = null; private static IClientManager clientManager = null; private static IJobManager jobManager = null; private static IUserRoleManager userRoleManager = null; private static IClientCommunicator clientCommunicator = null; private static ILifecycleManager lifecycleManager = null; private static IClientAdapter clientAdapter = null; private static IClientGroupAdapter clientGroupAdapter = null; private static IResourceAdapter resourceAdapter = null; private static IUserAdapter userAdapter = null; private static IUserGroupAdapter userGroupAdapter = null; private static IPermissionOwnerAdapter permOwnerAdapter = null; private static IJobAdapter jobAdapter = null; private static IJobResultsAdapter jobResultsAdapter = null; private static IScheduler scheduler = null; /// /// Gets the db transaction manager /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static ITransactionManager GetTransactionManager() { if (transManager == null) { transManager = discoveryService.GetInstances()[0]; } return transManager; } /// /// Gets the client manager /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static IClientManager GetClientManager() { if (clientManager == null) clientManager = new ClientManager(); return clientManager; } /// /// Gets the job manager /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static IJobManager GetJobManager() { if (jobManager == null) jobManager = new JobManager(); return jobManager; } /// /// Gets the user role manager /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static IUserRoleManager GetUserRoleManager() { if (userRoleManager == null) userRoleManager = new UserRoleManager(); return userRoleManager; } /// /// Gets the client Communicator /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static IClientCommunicator GetClientCommunicator() { if (clientCommunicator == null) clientCommunicator = new ClientCommunicator(); return clientCommunicator; } /// /// Gets the lifecycle manager /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static ILifecycleManager GetLifecycleManager() { if (lifecycleManager == null) { lifecycleManager = new LifecycleManager(); } return lifecycleManager; } /// /// Gets the client database adapter /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static IClientAdapter GetClientAdapter() { if (clientAdapter == null) { clientAdapter = discoveryService.GetInstances()[0]; } return clientAdapter; } /// /// Gets the client group database adapter /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static IClientGroupAdapter GetClientGroupAdapter() { if (clientGroupAdapter == null) { clientGroupAdapter = discoveryService.GetInstances()[0]; } return clientGroupAdapter; } /// /// Gets the resource database adapter /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static IResourceAdapter GetResourceAdapter() { if (resourceAdapter == null) { resourceAdapter = discoveryService.GetInstances()[0]; } return resourceAdapter; } /// /// Gets the user database adapter /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static IUserAdapter GetUserAdapter() { if (userAdapter == null) { userAdapter = discoveryService.GetInstances()[0]; } return userAdapter; } /// /// Gets the user group database adapter /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static IUserGroupAdapter GetUserGroupAdapter() { if (userGroupAdapter == null) { userGroupAdapter = discoveryService.GetInstances()[0]; } return userGroupAdapter; } /// /// Gets the permission owner database adapter /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static IPermissionOwnerAdapter GetPermissionOwnerAdapter() { if (permOwnerAdapter == null) { permOwnerAdapter = discoveryService.GetInstances()[0]; } return permOwnerAdapter; } /// /// Gets the job database adapter /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static IJobAdapter GetJobAdapter() { if (jobAdapter == null) { jobAdapter = discoveryService.GetInstances()[0]; } return jobAdapter; } /// /// Gets the job results database adapter /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static IJobResultsAdapter GetJobResultsAdapter() { if (jobResultsAdapter == null) { jobResultsAdapter = discoveryService.GetInstances()[0]; } return jobResultsAdapter; } /// /// Gets the scheduler /// /// [MethodImpl(MethodImplOptions.Synchronized)] public static IScheduler GetScheduler() { if (scheduler == null) { scheduler = discoveryService.GetInstances()[0]; } return scheduler; } }