Beispiel #1
0
    internal void Stop()
    {
        Flush();

        if (visualStream != null)
        {
            visualStream.Flush();

            AmfSerializer.WriteObject(visualStream, summary);
            visualStream.Flush();

            visualStream.Close();
        }

        visualStream  = null;
        AmfSerializer = null;
    }
    public virtual bool Run(HttpListenerContext context)
    {
        bool serverRun = true;

        if (response.type == 0)
        {
            context.Response.ContentType = "application/x-amf";
            AmfSerializer.WriteObject(context.Response.OutputStream, response);
        }
        else if (response.atsvFilePath != null)
        {
            try
            {
                string fileName = response.atsvFilePath;
                Stream input    = new FileStream(fileName, FileMode.Open);

                context.Response.ContentType     = System.Net.Mime.MediaTypeNames.Application.Octet;
                context.Response.ContentLength64 = input.Length;
                context.Response.AddHeader("Date", DateTime.Now.ToString("r"));
                context.Response.AddHeader("Last-Modified", File.GetLastWriteTime(fileName).ToString("r"));

                byte[] buffer = new byte[1024 * 64];
                int    nbytes;
                while ((nbytes = input.Read(buffer, 0, buffer.Length)) > 0)
                {
                    context.Response.OutputStream.Write(buffer, 0, nbytes);
                }

                input.Close();
                context.Response.OutputStream.Flush();
                context.Response.StatusCode = (int)HttpStatusCode.OK;
            }
            catch (Exception e)
            {
                context.Response.StatusCode        = (int)HttpStatusCode.NotFound;
                context.Response.StatusDescription = e.Message;
            }
        }
        else if (response.type == -1)
        {
            serverRun = false;
        }
        else if (response.type == -2)
        {
            context.Response.ContentType = "text/plain";
            byte[] bytes = System.Text.Encoding.UTF8.GetBytes(response.ErrorMessage);
            context.Response.OutputStream.Write(bytes, 0, bytes.Length);
        }

        /*else
         * {
         *  context.Response.StatusCode = (int)HttpStatusCode.NotFound;
         *  context.Response.StatusDescription = "Recorded file path is null !";
         * }*/

        context.Response.Close();
        return(serverRun);
    }
Beispiel #3
0
        /// <summary>
        /// Writes a message to a specified stream.
        /// </summary>
        /// <remarks>An actual serialization is performed rigth here.</remarks>
        /// <param name="message">The Message to write to the stream.</param>
        /// <param name="stream">The Stream object to which the message is written.</param>
        public override void WriteMessage(Message message, Stream stream)
        {
            try
            {
                using (var ms = new MemoryStream())
                {
                    //Read AMFX message
                    var writer = XmlDictionaryWriter.CreateDictionaryWriter(AmfxWriter.Create(ms));
                    message.WriteBodyContents(writer);
                    writer.Flush();
                    ms.Seek(0, SeekOrigin.Begin);

                    //Encode binary AMF packet from AMFX data
                    _serializer.WriteObject(stream, AmfxReader.Create(ms));
                }
            }
            finally
            {
                message.Close();
            }
        }