protected async Task SendEyeTrackerMessage()
        {
            if (Callback == null)
            {
                return;
            }

            while (!_keepAliveFaulted)
            {
                if (NextGazeMessage != null)
                {
                    await Callback.SendTrackerMessage(NextGazeMessage.CreateBinaryMessage());

                    NextGazeMessage = null;
                }
                if (NextUserPresenceMessage != null)
                {
                    await Callback.SendTrackerMessage(NextUserPresenceMessage.CreateBinaryMessage());

                    NextUserPresenceMessage = null;
                }


                await Task.Delay(20);
            }
            Dispose();
        }
        private void gazePointStreamNext(object sender, StreamData <GazePointData> e)
        {
            this.NextGazeMessage = new GazeMessage(e.Data.X, e.Data.Y);

            this.NextGazeMessage.HasLeftEyePosition  = this.HasLeftEyePosition;
            this.NextGazeMessage.HasRightEyePosition = this.HasRightEyePosition;

            //Logging at every n-th milliseconds
            if (e.Data.Timestamp - lastGazeMessage > 1000)
            {
                Console.WriteLine("Interactor: " + e.InteractorId + " " + NextGazeMessage.ToString());
                lastGazeMessage = e.Data.Timestamp;
            }
        }