Пример #1
0
        public void TestHttpRequestSerializationBytesRoundTrip()
        {
            AvroHttpRequest r = CreateAvroHttpRequest();

            var b  = AvroHttpSerializer.ToBytes(r);
            var r1 = AvroHttpSerializer.FromBytes(b);

            var ri  = ByteUtilities.ByteArraysToString(r.InputStream);
            var ri1 = ByteUtilities.ByteArraysToString(r1.InputStream);

            Assert.Equal(ri, ri1);
            Assert.Equal(r.QueryString, r1.QueryString);
        }
Пример #2
0
        /// <summary>
        /// Called when receving an http request from Java side
        /// </summary>
        /// <param name="httpMessage">The HTTP message.</param>
        public void OnNext(IHttpMessage httpMessage)
        {
            LOGGER.Log(Level.Info, "HttpHandler OnNext is called");
            string requestString = httpMessage.GetRequestString();

            if (requestString != null && requestString.Equals(SPEC))
            {
                LOGGER.Log(Level.Info, "HttpHandler OnNext, requestString:" + requestString);
                LOGGER.Log(Level.Info, "HttpHandler OnNext, port number:" + httpServerPort.PortNumber);

                httpMessage.SetUriSpecification(GetAllSpecifications());
            }
            else
            {
                LOGGER.Log(Level.Info, "HttpHandler OnNext, handling http request.");
                byte[]          byteData        = httpMessage.GetQueryReuestData();
                AvroHttpRequest avroHttpRequest = AvroHttpSerializer.FromBytes(byteData);
                LOGGER.Log(Level.Info, "HttpHandler OnNext, requestData:" + avroHttpRequest);

                string spec = GetSpecification(avroHttpRequest.PathInfo);
                if (spec != null)
                {
                    LOGGER.Log(Level.Info, "HttpHandler OnNext, target:" + spec);
                    ReefHttpRequest  request  = ToHttpRequest(avroHttpRequest);
                    ReefHttpResponse response = new ReefHttpResponse();

                    IHttpHandler handler;
                    eventHandlers.TryGetValue(spec.ToLower(CultureInfo.CurrentCulture), out handler);

                    byte[] responseData;
                    if (handler != null)
                    {
                        LOGGER.Log(Level.Info, "HttpHandler OnNext, get eventHandler:" + handler.GetSpecification());
                        handler.OnHttpRequest(request, response);
                        responseData = response.OutputStream;
                    }
                    else
                    {
                        responseData =
                            ByteUtilities.StringToByteArrays(string.Format(CultureInfo.CurrentCulture,
                                                                           "No event handler found at CLR side for {0}.",
                                                                           spec));
                    }
                    httpMessage.SetQueryResponseData(responseData);
                }
            }
        }