66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
/*********************************************************************************************
 | 
						|
 * Copyright 2016 - Volian Enterprises, Inc. All rights reserved.
 | 
						|
 * Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
 | 
						|
 *********************************************************************************************/
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.IO.Pipes;
 | 
						|
//using System.Linq;
 | 
						|
using System.Text;
 | 
						|
//using System.Threading.Tasks;
 | 
						|
 | 
						|
namespace Volian.Pipe.Library
 | 
						|
{
 | 
						|
	public class PipeClient
 | 
						|
	{
 | 
						|
		private string _Name;
 | 
						|
		public string Name
 | 
						|
		{
 | 
						|
			get { return _Name; }
 | 
						|
			set { _Name = value; }
 | 
						|
		}
 | 
						|
		private int _TimeOut = 1000;
 | 
						|
		public int TimeOut
 | 
						|
		{
 | 
						|
			get { return _TimeOut; }
 | 
						|
			set { _TimeOut = value; }
 | 
						|
		}
 | 
						|
		public PipeClient(string name)
 | 
						|
		{
 | 
						|
			_Name = name;
 | 
						|
		}
 | 
						|
		public void Send(string msg)
 | 
						|
		{
 | 
						|
			try
 | 
						|
			{
 | 
						|
				NamedPipeClientStream pipeStream = new NamedPipeClientStream(".", Name, PipeDirection.Out, PipeOptions.Asynchronous);
 | 
						|
				// The connect function will indefinitely wait for the pipe to become available
 | 
						|
				// If that is not acceptable specify a maximum waiting time (in ms)
 | 
						|
				pipeStream.Connect(TimeOut);
 | 
						|
				byte[] _buffer = Encoding.UTF8.GetBytes(msg);
 | 
						|
				pipeStream.BeginWrite(_buffer, 0, _buffer.Length, AsyncSend, pipeStream);
 | 
						|
			}
 | 
						|
			catch (Exception ex)
 | 
						|
			{
 | 
						|
				Console.WriteLine(ex.Message);
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void AsyncSend(IAsyncResult iar)
 | 
						|
		{
 | 
						|
			try
 | 
						|
			{
 | 
						|
				// Get the pipe
 | 
						|
				NamedPipeClientStream pipeStream = (NamedPipeClientStream)iar.AsyncState;
 | 
						|
				// End the write
 | 
						|
				pipeStream.EndWrite(iar);
 | 
						|
				pipeStream.Flush();
 | 
						|
				pipeStream.Close();
 | 
						|
				pipeStream.Dispose();
 | 
						|
			}
 | 
						|
			catch (Exception oEX)
 | 
						|
			{
 | 
						|
				Console.WriteLine(oEX.Message);
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
} |