/// <summary>
        /// Provides a standard implementation of HttpGet
        /// </summary>
        /// <param name="get">The HttpGet message to process</param>
        /// <param name="state">The webcam state</param>
        /// <param name="transform">The embedded resource to use as the XSLT transform</param>
        public void HttpGetHelper(HttpGet get, WebCamSensorState state, string transform)
        {
            var copy = state.Clone() as WebCamSensorState;

            copy.Data = null;

            get.ResponsePort.Post(
                new HttpResponseType(
                    HttpStatusCode.OK,
                    copy,
                    transform));
        }
        /// <summary>
        /// Provides a standard implementation of HttpQuery
        /// </summary>
        /// <param name="query">The HttpQuery message to process</param>
        /// <param name="state">The webcam state</param>
        /// <param name="transform">The embedded resource to use as the XSLT transform</param>
        /// <param name="utilitiesPort">The utilities port used to stream images</param>
        /// <returns>Stanard CCR iterator</returns>
        public IEnumerator <ITask> HttpQueryHelper(HttpQuery query, WebCamSensorState state, string transform, DsspHttpUtilitiesPort utilitiesPort)
        {
            var type      = query.Body.Query[QueryType];
            var mediaType = string.Empty;
            var format    = default(sdi.ImageFormat);

            switch (type.ToLowerInvariant())
            {
            case Jpeg:
                format    = sdi.ImageFormat.Jpeg;
                mediaType = MediaTypeNames.Image.Jpeg;
                break;

            case Gif:
                format    = sdi.ImageFormat.Gif;
                mediaType = MediaTypeNames.Image.Gif;
                break;

            case Png:
                format    = sdi.ImageFormat.Png;
                mediaType = MediaPng;
                break;

            case Bmp:
                format    = sdi.ImageFormat.Bmp;
                mediaType = MediaBmp;
                break;

            default:
                var copy = state.Clone() as WebCamSensorState;
                copy.Data = null;

                query.ResponsePort.Post(
                    new HttpResponseType(
                        HttpStatusCode.OK,
                        copy,
                        transform));
                yield break;
            }

            if (state.Data == null || state.Data.Length == 0)
            {
                query.ResponsePort.Post(
                    new HttpResponseType(
                        HttpStatusCode.OK,
                        state,
                        transform));
                yield break;
            }

            using (var image = state.Bitmap)
            {
                using (var mem = new MemoryStream())
                {
                    image.Save(mem, format);
                    mem.Position = 0;

                    var response = new WriteResponseFromStream(
                        query.Body.Context,
                        mem,
                        mediaType);

                    utilitiesPort.Post(response);

                    yield return(response.ResultPort.Choice());
                }
            }
        }