コード例 #1
0
ファイル: IOSinks.cs プロジェクト: jarlrasm/akka.net
        /// <summary>
        /// TBD
        /// </summary>
        /// <param name="f">TBD</param>
        /// <param name="startPosition">TBD</param>
        /// <param name="fileMode">TBD</param>
        /// <param name="attributes">TBD</param>
        /// <param name="shape">TBD</param>
        /// <param name="autoFlush"></param>
        /// <param name="flushSignaler"></param>
        public FileSink(FileInfo f, long startPosition, FileMode fileMode, Attributes attributes, SinkShape <ByteString> shape, bool autoFlush, FlushSignaler flushSignaler) : base(shape)
        {
            _f             = f;
            _startPosition = startPosition;
            _fileMode      = fileMode;
            Attributes     = attributes;
            _autoFlush     = autoFlush;
            _flushSignaler = flushSignaler;

            Label = $"FileSink({f}, {fileMode})";
        }
コード例 #2
0
ファイル: FileSubscriber.cs プロジェクト: jarlrasm/akka.net
        /// <summary>
        /// TBD
        /// </summary>
        /// <param name="f">TBD</param>
        /// <param name="completionPromise">TBD</param>
        /// <param name="bufferSize">TBD</param>
        /// <param name="startPosition">TBD</param>
        /// <param name="fileMode">TBD</param>
        /// <param name="autoFlush"></param>
        /// <param name="flushCommand"></param>
        /// <exception cref="ArgumentException">TBD</exception>
        /// <returns>TBD</returns>
        public static Props Props(
            FileInfo f,
            TaskCompletionSource <IOResult> completionPromise,
            int bufferSize,
            long startPosition,
            FileMode fileMode,
            bool autoFlush             = false,
            FlushSignaler flushCommand = null)
        {
            if (bufferSize <= 0)
            {
                throw new ArgumentException($"bufferSize must be > 0 (was {bufferSize})", nameof(bufferSize));
            }
            if (startPosition < 0)
            {
                throw new ArgumentException($"startPosition must be >= 0 (was {startPosition})", nameof(startPosition));
            }

            return(Actor.Props.Create(() => new FileSubscriber(f, completionPromise, bufferSize, startPosition, fileMode, autoFlush, flushCommand))
                   .WithDeploy(Deploy.Local));
        }
コード例 #3
0
ファイル: FileSubscriber.cs プロジェクト: jarlrasm/akka.net
        /// <summary>
        /// TBD
        /// </summary>
        /// <param name="f">TBD</param>
        /// <param name="completionPromise">TBD</param>
        /// <param name="bufferSize">TBD</param>
        /// <param name="startPosition">TBD</param>
        /// <param name="fileMode">TBD</param>
        /// <param name="autoFlush"></param>
        /// <param name="flushSignaler"></param>
        public FileSubscriber(
            FileInfo f,
            TaskCompletionSource <IOResult> completionPromise,
            int bufferSize,
            long startPosition,
            FileMode fileMode,
            bool autoFlush,
            FlushSignaler flushSignaler)
        {
            _f = f;
            _completionPromise = completionPromise;
            _startPosition     = startPosition;
            _fileMode          = fileMode;
            _autoFlush         = autoFlush;
            _log             = Context.GetLogger();
            _requestStrategy = new WatermarkRequestStrategy(highWatermark: bufferSize);

            if (flushSignaler != null)
            {
                flushSignaler.FileSubscriber = Self;
            }
        }