/// <summary> /// Register an engine with this task-broker /// </summary> /// <param name="engineId">engine id</param> public void RegisterEngineId(string engineId) { _log.DebugFormat("Received request to register engine {0}", engineId); try { // first create a grid-engine client IComputeEngine engine = new GridEngineClient(); (engine as GridEngineClient).Endpoint.Address = new EndpointAddress(String.Format("{0}/{1}", CLIENT_BASE_ADDRESS, engineId)); // *** critical section *** lock (_enginesMutex) { if (!_engineCollection.ContainsKey(engineId)) { _engineCollection[engineId] = engine; } } _log.DebugFormat("Registered engine {0}", engineId); } catch (Exception e) { _log.ErrorFormat("Error registering engine {0}: {1}\n{2}", engineId, e.Message, e.StackTrace); } }