private void HandleSend(HttpRequest request, HttpResponse response) { RtmptConnection connection = this.GetConnection(request); if (connection == null) { this.HandleBadRequest(__Res.GetString("Rtmpt_UnknownClient", new object[] { this.GetHttpRequestPath(request) }), response); } else { if (connection.Client != null) { connection.Client.Renew(); } int contentLength = request.ContentLength; byte[] buffer = new byte[request.InputStream.Length]; request.InputStream.Read(buffer, 0, (int)request.InputStream.Length); ByteBuffer data = ByteBuffer.Wrap(buffer); IList list = connection.Decode(data); if ((list == null) || (list.Count == 0)) { this.ReturnMessage(connection.PollingDelay, response); } else { foreach (object obj2 in list) { try { if (obj2 is ByteBuffer) { ByteBuffer packet = obj2 as ByteBuffer; connection.RawWrite(packet); } else { (FluorineContext.Current as FluorineWebContext).SetConnection(connection); this._rtmpHandler.MessageReceived(connection, obj2); } } catch (Exception exception) { log.Error(__Res.GetString("Rtmp_CouldNotProcessMessage"), exception); } } this.ReturnPendingMessages(connection, response); } } }
private void HandleSend(HttpRequest request, HttpResponse response) { RtmptConnection connection = GetConnection(request); if (connection == null) { HandleBadRequest(__Res.GetString(__Res.Rtmpt_UnknownClient, GetHttpRequestPath(request)), response); return; } FluorineRtmpContext.Initialize(connection); //int length = request.ContentLength; byte[] data = new byte[request.InputStream.Length]; request.InputStream.Read(data, 0, (int)request.InputStream.Length); ByteBuffer buffer = ByteBuffer.Wrap(data); IList messages = connection.Decode(buffer); if (messages == null || messages.Count == 0) { ReturnMessage(connection.PollingDelay, response); return; } // Execute the received RTMP messages foreach (object message in messages) { try { if (message is ByteBuffer) { connection.Write(message as ByteBuffer); } else if (message is byte[]) { connection.Write(message as byte[]); } else { _rtmpHandler.MessageReceived(connection, message); } } catch (Exception ex) { Log.Error(__Res.GetString(__Res.Rtmp_CouldNotProcessMessage), ex); } } // Send results to client ReturnPendingMessages(connection, response); }
private void HandleSend(RtmptRequest request) { RtmptConnection connection = this.GetConnection(request); if (connection == null) { this.HandleBadRequest(__Res.GetString("Rtmpt_UnknownClient", new object[] { request.Url }), request); } else { if (connection.Client != null) { connection.Client.Renew(); } int contentLength = request.ContentLength; ByteBuffer data = request.Data; IList list = connection.Decode(data); if ((list == null) || (list.Count == 0)) { this.ReturnMessage(connection.PollingDelay, request); } else { foreach (object obj2 in list) { try { if (obj2 is ByteBuffer) { ByteBuffer packet = obj2 as ByteBuffer; connection.RawWrite(packet); } else { FluorineRtmpContext.Initialize(connection); this._rtmpHandler.MessageReceived(connection, obj2); } } catch (Exception exception) { log.Error(__Res.GetString("Rtmp_CouldNotProcessMessage"), exception); } } this.ReturnPendingMessages(connection, request); } } }