コード例 #1
0
        public override ConnectionInfo GetConnectionInfo()
        {
            ConnectionStatus status;

            switch (state)
            {
            case ConnectionState.Waiting:   status = ConnectionStatus.Connecting; break;

            case ConnectionState.Connected: status = ConnectionStatus.Connecting; break;

            case ConnectionState.Receiving: status = ConnectionStatus.Connected; break;

            case ConnectionState.Error:     status = ConnectionStatus.Error; break;

            default:                        status = ConnectionStatus.Idle; break;
            }
            IPEndPoint endpoint = null;

            if (this.connection?.Client?.Connected ?? false)
            {
                endpoint = (IPEndPoint)this.connection.Client.Client.RemoteEndPoint;
            }
            return(new ConnectionInfoBuilder {
                ProtocolName = "HTTP Push Source",
                Type = ConnectionType.Source,
                Status = status,
                RemoteName = SourceUri.ToString(),
                RemoteEndPoint = endpoint,
                RemoteHostStatus = (endpoint != null && endpoint.Address.IsSiteLocal()) ? RemoteHostStatus.Local : RemoteHostStatus.None,
                ContentPosition = contentSink.LastContent?.Position ?? 0,
                RecvRate = RecvRate,
                SendRate = SendRate,
                AgentName = clientName,
            }.Build());
        }
コード例 #2
0
        public override ConnectionInfo GetConnectionInfo()
        {
            if (sourceConnection != null)
            {
                return(sourceConnection.GetConnectionInfo());
            }
            else
            {
                ConnectionStatus status;
                switch (StoppedReason)
                {
                case StopReason.UserReconnect: status = ConnectionStatus.Connecting; break;

                case StopReason.UserShutdown:  status = ConnectionStatus.Idle; break;

                default:                       status = ConnectionStatus.Error; break;
                }
                IPEndPoint endpoint    = null;
                string     server_name = "";
                return(new ConnectionInfo(
                           "HTTP Source",
                           ConnectionType.Source,
                           status,
                           SourceUri.ToString(),
                           endpoint,
                           RemoteHostStatus.None,
                           null,
                           null,
                           null,
                           null,
                           null,
                           server_name));
            }
        }
コード例 #3
0
        public override ConnectionInfo GetConnectionInfo()
        {
            if (sourceConnection != null)
            {
                return(sourceConnection.GetConnectionInfo());
            }
            else
            {
                ConnectionStatus status;
                switch (StoppedReason)
                {
                case StopReason.UserReconnect: status = ConnectionStatus.Connecting; break;

                case StopReason.UserShutdown:  status = ConnectionStatus.Idle; break;

                default:                       status = ConnectionStatus.Error; break;
                }
                IPEndPoint endpoint    = null;
                string     client_name = "";

                return(new ConnectionInfoBuilder {
                    ProtocolName = "RTMP Source",
                    Type = ConnectionType.Source,
                    Status = status,
                    RemoteName = SourceUri.ToString(),
                    RemoteEndPoint = endpoint,
                    RemoteHostStatus = RemoteHostStatus.None,
                    AgentName = client_name,
                }.Build());
            }
        }
コード例 #4
0
        /// <summary>
        /// Serializes the object to XML.
        /// </summary>
        /// <param name="writer">The xml writer to which to serialize the object.</param>
        public void WriteXml(XmlWriter writer)
        {
            writer.WriteStartElement("sourceUri");
            XmlSerializer xsrSerializer = new XmlSerializer(typeof(string));

            xsrSerializer.Serialize(writer, SourceUri.ToString());
            writer.WriteEndElement();

            writer.WriteStartElement("sourcePath");
            xsrSerializer = new XmlSerializer(typeof(string));
            xsrSerializer.Serialize(writer, SourcePath);
            writer.WriteEndElement();

            writer.WriteStartElement("sourceName");
            foreach (string strCaption in SourceName)
            {
                xsrSerializer = new XmlSerializer(typeof(string));
                xsrSerializer.Serialize(writer, strCaption);
            }
            writer.WriteEndElement();

            writer.WriteStartElement("defaultSourcePath");
            xsrSerializer = new XmlSerializer(typeof(string));
            xsrSerializer.Serialize(writer, DefaultSourcePath);
            writer.WriteEndElement();

            writer.WriteStartElement("status");
            xsrSerializer = new XmlSerializer(typeof(TaskStatus));
            xsrSerializer.Serialize(writer, Status);
            writer.WriteEndElement();

            writer.WriteStartElement("downloadFiles");
            foreach (Uri uriFile in DownloadFiles)
            {
                writer.WriteStartElement("file");
                writer.WriteAttributeString("path", uriFile.ToString());
                writer.WriteEndElement();
            }
            writer.WriteEndElement();

            writer.WriteStartElement("downloadedFiles");
            foreach (string strFile in DownloadedFiles)
            {
                writer.WriteStartElement("file");
                writer.WriteAttributeString("path", strFile);
                writer.WriteEndElement();
            }
            writer.WriteEndElement();
        }
コード例 #5
0
        public override ConnectionInfo GetConnectionInfo()
        {
            ConnectionStatus status;

            switch (state)
            {
            case State.SendingRequest:  status = ConnectionStatus.Connecting; break;

            case State.WaitingResponse: status = ConnectionStatus.Connecting; break;

            case State.Receiving:       status = ConnectionStatus.Connected; break;

            case State.Disconnected:    status = ConnectionStatus.Error; break;

            default:                    status = ConnectionStatus.Idle; break;
            }
            IPEndPoint endpoint = null;

            if (client != null && client.Connected)
            {
                endpoint = (IPEndPoint)client.Client.RemoteEndPoint;
            }
            string server_name = "";

            if (response == null || !response.Headers.TryGetValue("SERVER", out server_name))
            {
                server_name = "";
            }
            return(new ConnectionInfo(
                       "HTTP Source",
                       ConnectionType.Source,
                       status,
                       SourceUri.ToString(),
                       endpoint,
                       (endpoint != null && endpoint.Address.IsSiteLocal()) ? RemoteHostStatus.Local : RemoteHostStatus.None,
                       lastPosition,
                       RecvRate,
                       SendRate,
                       null,
                       null,
                       server_name));
        }
コード例 #6
0
        public ConnectionInfo GetConnectionInfo()
        {
            var source_connection_info = SourceChannel?.SourceStream?.GetConnectionInfo();
            ConnectionStatus status;

            switch (StoppedReason)
            {
            case StopReason.None:
                if (SourceChannel != null)
                {
                    status = ConnectionStatus.Connected;
                }
                else
                {
                    status = ConnectionStatus.Error;
                }
                break;

            case StopReason.OffAir:
            case StopReason.UserReconnect:
            case StopReason.UserShutdown:
                status = ConnectionStatus.Idle;
                break;

            default:
                status = ConnectionStatus.Error;
                break;
            }
            return(new ConnectionInfoBuilder {
                ProtocolName = "Loopback Source",
                Type = ConnectionType.Source,
                Status = status,
                RemoteName = SourceUri.ToString(),
                RemoteEndPoint = null,
                RemoteHostStatus = RemoteHostStatus.Local,
                ContentPosition = SourceChannel?.ContentPosition ?? 0,
                RecvRate = source_connection_info?.RecvRate ?? 0.0f,
                SendRate = source_connection_info?.SendRate ?? 0.0f,
                AgentName = "",
            }.Build());
        }
コード例 #7
0
        public override ConnectionInfo GetConnectionInfo()
        {
            IPEndPoint endpoint    = connection != null ? connection.RemoteEndPoint : null;
            string     server_name = "";

            if (response == null || !response.Headers.TryGetValue("SERVER", out server_name))
            {
                server_name = "";
            }
            return(new ConnectionInfoBuilder {
                ProtocolName = "HTTP Source",
                Type = ConnectionType.Source,
                Status = Status,
                RemoteName = SourceUri.ToString(),
                RemoteEndPoint = endpoint,
                RemoteHostStatus = (endpoint != null && endpoint.Address.IsSiteLocal()) ? RemoteHostStatus.Local : RemoteHostStatus.None,
                ContentPosition = contentSink.LastContent?.Position ?? 0,
                RecvRate = RecvRate,
                SendRate = SendRate,
                AgentName = server_name,
            }.Build());
        }
コード例 #8
0
 public override ConnectionInfo GetConnectionInfo()
 {
     if (sourceConnection != null)
     {
         return(sourceConnection.GetConnectionInfo());
     }
     else
     {
         return(new ConnectionInfoBuilder {
             ProtocolName = "Loopback Source",
             Type = ConnectionType.Source,
             Status = ConnectionStatus.Idle,
             RemoteName = SourceUri.ToString(),
             RemoteEndPoint = null,
             RemoteHostStatus = RemoteHostStatus.Local,
             ContentPosition = 0,
             RecvRate = RecvRate,
             SendRate = SendRate,
             AgentName = "",
         }.Build());
     }
 }
コード例 #9
0
        public override ConnectionInfo GetConnectionInfo()
        {
            ConnectionStatus status;

            switch (state)
            {
            case ConnectionState.Waiting:   status = ConnectionStatus.Connecting; break;

            case ConnectionState.Connected: status = ConnectionStatus.Connecting; break;

            case ConnectionState.Receiving: status = ConnectionStatus.Connected; break;

            case ConnectionState.Error:     status = ConnectionStatus.Error; break;

            default:                        status = ConnectionStatus.Idle; break;
            }
            IPEndPoint endpoint = null;

            if (client != null && client.Connected)
            {
                endpoint = (IPEndPoint)client.Client.RemoteEndPoint;
            }
            return(new ConnectionInfo(
                       "RTMP Source",
                       ConnectionType.Source,
                       status,
                       SourceUri.ToString(),
                       endpoint,
                       (endpoint != null && endpoint.Address.IsSiteLocal()) ? RemoteHostStatus.Local : RemoteHostStatus.None,
                       flvBuffer.Position,
                       RecvRate,
                       SendRate,
                       null,
                       null,
                       clientName));
        }
コード例 #10
0
 /// <summary>
 /// Returns a summary of the descriptor.
 /// </summary>
 /// <returns>A summary of the descriptor.</returns>
 public override string ToString()
 {
     return(String.Format("{0} => {1} ({2})", SourceUri.ToString(), SourcePath, DownloadFiles.Count));
 }