internal void CreateSession()
		{
			Uri serviceAddress = new Uri("net.pipe://localhost/Multitouch.Service/ApplicationInterface");
			EndpointAddress remoteAddress = new EndpointAddress(serviceAddress);
			NetNamedPipeBinding namedPipeBinding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
			namedPipeBinding.MaxReceivedMessageSize = int.MaxValue;
			namedPipeBinding.MaxBufferSize = int.MaxValue;
			namedPipeBinding.ReaderQuotas.MaxArrayLength = int.MaxValue;
			namedPipeBinding.ReceiveTimeout = TimeSpan.MaxValue;

			IApplicationInterfaceCallback dispatcher = new MultitouchServiceContactDispatcher(logic);
			InstanceContext instanceContext = new InstanceContext(dispatcher);
			service = new ApplicationInterfaceClient(instanceContext, namedPipeBinding, remoteAddress);

			try
			{
				service.CreateSession();
				MouseHelper.SingleMouseFallback = false;
			}
			catch (EndpointNotFoundException)
			{
				//throw new MultitouchException("Could not connect to Multitouch service, please start Multitouch input server before running this application.", e);
				Trace.TraceWarning("Could not connect to Multitouch service. Enabling single mouse input.");
				SingleMouseClientAndDispatcher client = new SingleMouseClientAndDispatcher(logic);
				service = client;
				dispatcher = client;
				MouseHelper.SingleMouseFallback = true;
			}
			contactDispatcher = dispatcher;
		}
        internal void CreateSession()
        {
            Uri                 serviceAddress   = new Uri("net.pipe://localhost/Multitouch.Service/ApplicationInterface");
            EndpointAddress     remoteAddress    = new EndpointAddress(serviceAddress);
            NetNamedPipeBinding namedPipeBinding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);

            namedPipeBinding.MaxReceivedMessageSize      = int.MaxValue;
            namedPipeBinding.MaxBufferSize               = int.MaxValue;
            namedPipeBinding.ReaderQuotas.MaxArrayLength = int.MaxValue;
            namedPipeBinding.ReceiveTimeout              = TimeSpan.MaxValue;

            IApplicationInterfaceCallback dispatcher = new MultitouchServiceContactDispatcher(logic);
            InstanceContext instanceContext          = new InstanceContext(dispatcher);

            service = new ApplicationInterfaceClient(instanceContext, namedPipeBinding, remoteAddress);

            try
            {
                service.CreateSession();
                MouseHelper.SingleMouseFallback = false;
            }
            catch (EndpointNotFoundException)
            {
                //throw new MultitouchException("Could not connect to Multitouch service, please start Multitouch input server before running this application.", e);
                Trace.TraceWarning("Could not connect to Multitouch service. Enabling single mouse input.");
                SingleMouseClientAndDispatcher client = new SingleMouseClientAndDispatcher(logic);
                service    = client;
                dispatcher = client;
                MouseHelper.SingleMouseFallback = true;
            }
            contactDispatcher = dispatcher;
        }
 public SessionContext(string sessionId, IApplicationInterfaceCallback callback)
 {
     SessionId    = sessionId;
     Callback     = callback;
     ImagesToSend = new Dictionary <ImageType, bool>();
     foreach (ImageType value in Enum.GetValues(typeof(ImageType)))
     {
         ImagesToSend.Add(value, false);
     }
     SendEmptyFrames = false;
 }
		internal void RemoveSession()
		{
			if (contactDispatcher != null)
			{
				try
				{
					service.RemoveSession();
					IDisposable client = service as IDisposable;
					if(client != null)
						client.Dispose();
				}
				catch (Exception e)
				{
					Trace.TraceWarning(e.ToString());
				}
				contactDispatcher = null;
				service = null;
			}
		}
 internal void RemoveSession()
 {
     if (contactDispatcher != null)
     {
         try
         {
             service.RemoveSession();
             IDisposable client = service as IDisposable;
             if (client != null)
             {
                 client.Dispose();
             }
         }
         catch (Exception e)
         {
             Trace.TraceWarning(e.ToString());
         }
         contactDispatcher = null;
         service           = null;
     }
 }