예제 #1
0
        /*============================================================================*/
        /* Constructor                                                                */
        /*============================================================================*/

        /// <summary>
        /// Creates a Command Executor
        /// </summary>
        /// <param name="injector">The Injector to use. A child injector will be created from it.</param>
        /// <param name="removeMapping">removeMapping Remove mapping handler (optional)</param>
        /// <param name="handleResult">handleResult Result handler (optional)</param>
        /// <param name="onPreprocessCommandExecuting">onPreprocessCommandExecuting Preprocess before executing command (optional)</param>
        public CommandExecutor(IInjector injector, RemoveMappingDelegate removeMapping = null, HandleResultDelegate handleResult = null, OnPreprocessCommandExecutingDelegate onPreprocessCommandExecuting = null)
        {
            _injector      = injector.CreateChild();
            _removeMapping = removeMapping;
            _handleResult  = handleResult;
            _onPreprocessCommandExecuting = onPreprocessCommandExecuting;
        }
예제 #2
0
        internal Status InternalGet(
			ReadOptions options, Slice k,
			object arg, HandleResultDelegate saver)
        {
            Status s = new Status();
            Iterator iiter = rep_.IndexBlock.NewIterator(rep_.Options.Comparator);
            iiter.Seek(k);
            if (iiter.Valid)
            {
                Slice handle_value = iiter.Value;
                FilterBlockReader filter = rep_.Filter;
                BlockHandle handle = new BlockHandle();
                if (filter != null &&
                        handle.DecodeFrom(ref handle_value).IsOk &&
                        !filter.KeyMayMatch(handle.Offset, k))
                {
                    // Not found
                }
                else
                {
                    Slice tempHandle = iiter.Value;
                    Iterator blockIter = BlockReader(this, options, iiter.Value);
                    blockIter.Seek(k);
                    if (blockIter.Valid)
                    {
                        saver(arg, blockIter.Key, blockIter.Value);
                    }
                    s = blockIter.Status;
                }
            }
            if (s.IsOk)
            {
                s = iiter.Status;
            }

            return s;
        }
예제 #3
0
 public SequenceCommand AppendResultHandler(HandleResultDelegate handler)
 {
     m_ResultHandler = handler;
     return(this);
 }
		/*============================================================================*/
		/* Constructor                                                                */
		/*============================================================================*/

		/// <summary>
		/// Creates a Command Executor
		/// </summary>
		/// <param name="injector">The Injector to use. A child injector will be created from it.</param>
		/// <param name="removeMapping">removeMapping Remove mapping handler (optional)</param>
		/// <param name="handleResult">handleResult Result handler (optional)</param>
		public CommandExecutor (IInjector injector, RemoveMappingDelegate removeMapping = null, HandleResultDelegate handleResult = null)
		{
			_injector = injector.CreateChild();
			_removeMapping = removeMapping;
			_handleResult = handleResult;
		}
예제 #5
0
 public ModbusRTUSlaveSession(ModbusSlaveConfig conf, HandleResultDelegate resultHandler)
     : base(conf, resultHandler)
 {
 }
예제 #6
0
 public ModbusSlaveSession(ModbusSlaveConfig conf, HandleResultDelegate resultHandler)
 {
     config          = conf;
     messageDelegate = resultHandler;
 }