public void RegisterService(object serviceImplementation, Type serviceInterface, Guid guid)
 {
     if (serviceImplementation == null)
     {
         throw new ArgumentNullException(nameof(serviceImplementation));
     }
     else if (serviceInterface == null)
     {
         throw new ArgumentNullException(nameof(serviceInterface));
     }
     else if (!serviceInterface.IsInterface)
     {
         throw new ArgumentException($"Provided Service Interface '{serviceInterface.FullName}' was not an interface!");
     }
     else if (guid.Equals(Guid.Empty))
     {
         throw new ArgumentException($"Provided guid for service '{serviceInterface.FullName}' was zero guid!");
     }
     else
     {
         InvokableServiceContext context = invokableServiceContextFactory.Create(serviceImplementation, serviceInterface, guid);
         if (serviceContextsById.TryAdd(guid, context))
         {
             localServiceContainer.Register(context);
             clusteringPhaseManager.HandleServiceRegistered(context);
         }
     }
 }
 public void HandleServiceUnregistered(InvokableServiceContext invokableServiceContext)
 {
     synchronization.EnterReadLock();
     try {
         currentClusteringPhase.HandleServiceUnregistered(invokableServiceContext);
     } finally {
         synchronization.ExitReadLock();
     }
 }
 public void Register(InvokableServiceContext invokableServiceContext)
 {
     lock (synchronization) {
         if (serviceContextsByGuid.TryAdd(invokableServiceContext.Guid, invokableServiceContext))
         {
             ServiceRegistered?.Invoke(invokableServiceContext);
         }
     }
 }
 public void Unregister(InvokableServiceContext invokableServiceContext)
 {
     lock (synchronization) {
         var kvp = invokableServiceContext.Guid.PairValue(invokableServiceContext);
         if (serviceContextsByGuid.Remove(kvp))
         {
             ServiceUnregistered?.Invoke(invokableServiceContext);
         }
     }
 }
Esempio n. 5
0
        public void HandleServiceRegistered(InvokableServiceContext invokableServiceContext)
        {
            logger.Trace($"Locally registered service {invokableServiceContext.Guid}.");
            var addedServices = new HashSet <Guid> {
                invokableServiceContext.Guid
            };
            var removedServices = new HashSet <Guid>();

            messageSender.SendServiceUpdateAsync(addedServices, removedServices);
        }
Esempio n. 6
0
 public void HandleServiceUnregistered(InvokableServiceContext invokableServiceContext)
 {
     // does nothing
 }