public HarvesterListener(String initalizeData)
        {
            initalizeData = initalizeData ?? String.Empty;

            machineName = Environment.MachineName;
            domain = AppDomain.CurrentDomain.FriendlyName;

            var parsedInitializeData = ParseInitializationData(initalizeData);
            var binding = parsedInitializeData.ContainsKey("Binding") ? parsedInitializeData["Binding"] : @"\\.\pipe\Harvester";
            var mutexName = parsedInitializeData.ContainsKey("Mutex Name") ? parsedInitializeData["Mutex Name"] : "HarvesterMutex";
            var bufferType = parsedInitializeData.ContainsKey("Buffer Type") ? parsedInitializeData["Buffer Type"] : "NamedPipeBuffer";

            switch (bufferType)
            {
                case "SharedMemoryBuffer":
                    messageBuffer = new SharedMemoryBuffer(binding, OutputDebugString.BufferSize);
                    messageWriter = new OutputDebugStringWriter(mutexName, messageBuffer);
                    break;
                case "NamedPipeBuffer":
                    messageBuffer = new NamedPipeClientBuffer(".", binding);
                    messageWriter = new PipeMessageWriter(mutexName, messageBuffer);
                    break;
                default:
                    throw new NotSupportedException(String.Format(Localization.BufferTypeNotSupported, bufferType));
            }
        }
        /// <summary>
        /// Initializes a new instance of <see cref="HarvesterListener"/>.
        /// </summary>
        /// <param name="initializeData">The message buffer initialization string (i.e., Binding=\\.\pipe\Harvester; Buffer Type=NamedPipeBuffer; Mutex Name=HarvesterMutex;)</param>
        public HarvesterListener(String initializeData)
        {
            var parsedInitializeData = ParseInitializationData(initializeData ?? String.Empty);
            var binding = parsedInitializeData.ContainsKey("Binding") ? parsedInitializeData["Binding"] : @"\\.\pipe\Harvester";
            var mutexName = parsedInitializeData.ContainsKey("Mutex Name") ? parsedInitializeData["Mutex Name"] : "HarvesterMutex";
            var bufferType = parsedInitializeData.ContainsKey("Buffer Type") ? parsedInitializeData["Buffer Type"] : "NamedPipeBuffer";

            captureIdentity = !parsedInitializeData.ContainsKey("Capture Identity") || Boolean.Parse(parsedInitializeData["Capture Identity"]);
            switch (bufferType)
            {
                case "SharedMemoryBuffer":
                    messageBuffer = new SharedMemoryBuffer(binding, OutputDebugString.BufferSize);
                    messageWriter = new OutputDebugStringWriter(mutexName, messageBuffer);
                    break;
                case "NamedPipeBuffer":
                    messageBuffer = new NamedPipeClientBuffer(".", binding);
                    messageWriter = new PipeMessageWriter(mutexName, messageBuffer);
                    break;
                default:
                    throw new NotSupportedException(String.Format(Localization.BufferTypeNotSupported, bufferType));
            }
        }
 public WhenWritingToOpenBuffer()
 {
     pipeName = @"\\.\pipe\" + Guid.NewGuid();
     buffer = new NamedPipeClientBuffer(".", pipeName) { Timeout = TimeSpan.FromMilliseconds(250) };
     serverPipeStream = new NamedPipeServerStream(pipeName, PipeDirection.InOut);
 }
 public WhenReadingFromBuffer()
 {
     buffer = new NamedPipeClientBuffer();
 }
        public WhenWritingToClosedBuffer()
        {
            var pipeName = @"\\.\pipe\" + Guid.NewGuid();

            buffer = new NamedPipeClientBuffer(".", pipeName) { Timeout = TimeSpan.FromMilliseconds(250) };
        }
 public WhenDisposingBuffer()
 {
     buffer = new NamedPipeClientBuffer();
 }
 public WhenDisposingBuffer()
 {
     buffer = new NamedPipeServerBuffer();
 }
 public WhenCreatingBuffer()
 {
     pipeName = @"\\.\pipe\" + Guid.NewGuid();
     buffer = new NamedPipeServerBuffer(pipeName, "Everyone");
 }
 public WhenReadingFromBuffer()
 {
     pipeName = @"\\.\pipe\" + Guid.NewGuid();
     buffer = new NamedPipeServerBuffer(pipeName, "Everyone");
     clientPipeStream = new NamedPipeClientStream(".", pipeName, PipeDirection.InOut);
 }
        public WhenWritingToBuffer()
        {
            var pipeName = @"\\.\pipe\" + Guid.NewGuid();

            buffer = new NamedPipeServerBuffer(pipeName, "Everyone");
        }