예제 #1
0
        public HeadTrackingProxy ConnectHeadTrackingProxy()
        {
            if (headTrackingProxy == null)
            {
                // Request headtracking endpoint address
                bool success = controlSocket.TrySendAsJson(new RequestEndpoint(EndpointNames.HeadTracking), 1000);

                if (!success)
                {
                    HandleControlConnectionException(new Exception("API server timeout."));
                }

                EndpointCreated response;
                success = controlSocket.TryReceiveJson(out response, 1000);

                if (!success)
                {
                    HandleControlConnectionException(new Exception("API server timeout."));
                }

                if (response.Code == (int)ControlResponseCode.InUse)
                {
                    HandleControlConnectionException(new Exception("API already in use by another client."));
                }

                // Initialize the proxy
                headTrackingProxy = new HeadTrackingProxy(response.EndpointAddress, false);
            }

            return(headTrackingProxy);
        }
예제 #2
0
        // TODO Refactor 3 methods above (DRY)

        /// <summary>
        /// Closes head tracking API connection and lets other API clients use it.
        /// </summary>
        public void DisconnectHeadTrackingProxy()
        {
            if (headTrackingProxy == null)
            {
                return;
            }

            headTrackingProxy.Disconnect();
            headTrackingProxy = null;
        }
예제 #3
0
        private void ConnectOrReconnect()
        {
            try
            {
                // Close active connections (if restarting)
                _apiClient.DisconnectHeadTrackingProxy();
                _apiClient.DisconnectControllerProxy();
                _apiClient.DisconnectBroadcastProxy();

                // Give it some time to clean up
                Thread.Sleep(10);

                // Connect to the services
                _headTrackingProxy = _apiClient.ConnectHeadTrackingProxy();

                _broadCastProxy = _apiClient.ConnectToBroadcaster();

                _headTrackingProxy.ChangeTrackingState(true);
            }
            catch (Exception x)
            {
                Console.WriteLine($"Error: {x.Message}");
            }
        }
 public TrackingService(HeadTrackingProxy proxy)
 {
     this.proxy = proxy;
 }