Exemple #1
0
        protected override void HandleOperationRequest(OperationRequest request)
        {
            base.HandleOperationRequest(request);

            if (request.OperationCode == 0)
            {
                if (CommandHandlers.TryGetValue((ClientCommandName)request.Parameters[0], out Type type))
                {
                    var constraint   = type.GetGenericArguments()[0];
                    var handleAction = type.GetMethod("Handle");
                    var activator    = Activator.CreateInstance(type);
                    handleAction.Invoke(activator, new object[] { this, Body.DeserializeRaw((byte[])request.Parameters[2], constraint, out long InReadCount) });
Exemple #2
0
 public Option <Any> HandleCommand(Any command, ICommandContext context)
 {
     return(Unwrap(() =>
     {
         // TODO: Used to be a maybe...
         if (!CommandHandlers.TryGetValue(context.CommandName, out var handler))
         {
             throw new InvalidOperationException(
                 $"No command handler found for command [{context.CommandName}] on CRDT entity: {EntityClass}");
         }
         return handler.Invoke(Entity, command, context);
     }));
 }
 private void AddExtensions(IEnumerable <FtpCommandHandlerExtension> extensions)
 {
     foreach (var extension in extensions)
     {
         FtpCommandHandler handler;
         if (CommandHandlers.TryGetValue(extension.ExtensionFor, out handler))
         {
             var extensionHost = handler as IFtpCommandHandlerExtensionHost;
             if (extensionHost != null)
             {
                 foreach (var name in extension.Names)
                 {
                     extensionHost.Extensions.Add(name, extension);
                 }
             }
         }
     }
 }
Exemple #4
0
        private Tuple <FtpCommand, IFtpCommandBase, bool> FindCommandHandler(FtpCommand command)
        {
            if (!CommandHandlers.TryGetValue(command.Name, out var handler))
            {
                return(null);
            }

            if (!string.IsNullOrWhiteSpace(command.Argument) && handler is IFtpCommandHandlerExtensionHost extensionHost)
            {
                var extensionCommand = FtpCommand.Parse(command.Argument);
                if (extensionHost.Extensions.TryGetValue(extensionCommand.Name, out var extension))
                {
                    return(Tuple.Create(extensionCommand, (IFtpCommandBase)extension, extension.IsLoginRequired ?? handler.IsLoginRequired));
                }
            }

            return(Tuple.Create(command, (IFtpCommandBase)handler, handler.IsLoginRequired));
        }
        private Tuple <FtpCommand, FtpCommandHandlerBase, bool> FindCommandHandler(FtpCommand command)
        {
            FtpCommandHandler handler;

            if (!CommandHandlers.TryGetValue(command.Name, out handler))
            {
                return(null);
            }
            var extensionHost = handler as IFtpCommandHandlerExtensionHost;

            if (!string.IsNullOrWhiteSpace(command.Argument) && extensionHost != null)
            {
                var extensionCommand = FtpCommand.Parse(command.Argument);
                FtpCommandHandlerExtension extension;
                if (extensionHost.Extensions.TryGetValue(extensionCommand.Name, out extension))
                {
                    return(Tuple.Create(extensionCommand, (FtpCommandHandlerBase)extension, extension.IsLoginRequired ?? handler.IsLoginRequired));
                }
            }
            return(Tuple.Create(command, (FtpCommandHandlerBase)handler, handler.IsLoginRequired));
        }