예제 #1
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="config">Config</param>
        /// <param name="blockchain">Blockchain</param>
        /// <param name="logger">Logger</param>
        /// <param name="aclLoader">ACL Loader</param>
        public RpcServer(
            RpcConfig config,
            ILogger <RpcServer> logger,
            INetworkAclLoader aclLoader)
        {
            _config = config ?? throw new ArgumentNullException(nameof(config));
            _logger = logger ?? throw new ArgumentNullException(nameof(logger));

            if (aclLoader == null)
            {
                throw new ArgumentNullException(nameof(aclLoader));
            }
            _acl = aclLoader.Load(config.AclConfig) ?? NetworkAcl.Default;

            InjectSpecialParameter(ctx => ctx);
        }
예제 #2
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="config">Config</param>
        /// <param name="blockchain">Blockchain</param>
        /// <param name="logger">Logger</param>
        /// <param name="aclFactory">ACL</param>
        public RpcServer(
            RpcConfig config,
            IBlockchain blockchain, ILogger <RpcServer> logger,
            NetworkACLFactory aclFactory)
        {
            _config     = config ?? throw new ArgumentNullException(nameof(config));
            _blockchain = blockchain ?? throw new ArgumentNullException(nameof(blockchain));
            _logger     = logger ?? throw new ArgumentNullException(nameof(logger));
            if (aclFactory == null)
            {
                throw new ArgumentNullException(nameof(aclFactory));
            }

            _acl = aclFactory.CreateNew();
            _acl?.Load(config?.ACL);
            _callbacks = new List <IRpcProcessRequest>();
        }