Пример #1
0
        /// <inheritdoc />
        public Either <IError, CapabilityClient <TArgument, TReturn> > GetCapability <TICapability, TArgument, TReturn>()
            where TICapability : ICapabilityDefinition
        {
            var name = CapabilityUtilities.GetCapabilityName <TICapability>();

            return(!_negotiator.Negotiate(_requestSocket)
                ? new Left <IError, CapabilityClient <TArgument, TReturn> >(new UnsuccessfulNegotiationWithServer())
                : GetCapabilityFromServer(name)
                   .Map(info =>
                        new CapabilityClient <TArgument, TReturn>(_requestSocket, info, _encryptor)));
        }
Пример #2
0
        /// <inheritdoc />
        public void Register <TCapability>() where TCapability : ICapability, new()
        {
            var name = CapabilityUtilities.GetCapabilityName <TCapability>();

            lock (_registry)
            {
                if (_registry.Contains(name))
                {
                    throw new CapabilityAlreadyRegisteredException();
                }

                _registry.Add(name, new TCapability());
            }
        }