⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 status.xpl

📁 OpenCDN内容分发系统
💻 XPL
字号:
<?xml version="1.0"?><!DOCTYPE methoddef SYSTEM "rpc-method.dtd"><methoddef><name>Status</name><version>1.0</version><signature>struct</signature><help>Returns a struct containing   KEY           VALUE   ret_code  =>  int (numeric return code)   ret_val   =>  string (message string)   data_ref  =>  {      d => {       relay_d1 => {          source_ip         => source ip address,         source_mountp     => source mountpoint,         dest_mountp       => destination mountpoint,         packets_per_sec   => packets relayed per second,         bits_per_sec      => bits relayed per second,         total_packets     => total packets relayed,         bytes_sent        => total bytes relayed,         connected_clients => {            1 => {             client_state     => client state,             user_agent       => client UA,             source_url       => url client is connected to,             bit_rate         => client bit rate,             packet_loss_perc => packet loss percent,             time_connected   => time connected,             client_address   => client address },           2 =>  ...                                            }                 }       relay_d2 =>  ...       },     r => {       relay_r1 => {          AverageBitrate             => average bitrate,         DuplicatePackets           => duplicate packets,         FECPacketsUsed             => Forward Error Connection packets used,         FECPacketsReceived         => Forward Error Connection packets received,         LatePackets                => late packets,         Name                       => BroadcastReceiver name,         PacketCount                => packet count,         PacketsLostBeforeTransport => Packets Lost Before Transport,         PacketsLostInTransport     => Packets Lost In Transport,         ResendsRequested           => Resends Requested,         connected_clients          => {            1 => {             Addr               => client address,             PlayerRequestedURL => Player Requested URL,             ASMRuleBook        => ASM Rule Book,             Audiences          => Audiences,             StreamiMimeType    => Mime Type of Stream i,             StreamiAvgBitRate  => Average BitRate of Stream i,             User-Agent         => client User Agent,             IsRDT              => flag: is RDT used?,             IsUDP              => flag: is UDP used?,             PlayerStarttime    => Player Start time,             Port               => client port},           2 =>  ...                                            }                 }       relay_r2 =>  ...       }     }</help><code language="perl"><![CDATA[#!/usr/bin/perl################################################################################   Sub Name:       Status#     #   Returns a struct containing##   Returns a struct containing#   KEY           VALUE#   ret_code  =>  int (numeric return code)#   ret_val   =>  string (message string)#   data_ref  =>  { #     d => {#       relay_d1 => { #         source_ip         => source ip address,#         source_mountp     => source mountpoint,#         dest_mountp       => destination mountpoint,#         packets_per_sec   => packets relayed per second,#         bits_per_sec      => bits relayed per second,#         total_packets     => total packets relayed,#         bytes_sent        => total bytes relayed,#         connected_clients => { #           1 => {#             client_state     => client state,#             user_agent       => client UA,#             source_url       => url client is connected to,#             bit_rate         => client bit rate,#             packet_loss_perc => packet loss percent,#             time_connected   => time connected,#             client_address   => client address },#           2 =>  ...#                                            }#                 }#       relay_d2 =>  ...#       },#     r => {#       relay_r1 => { #         AverageBitrate             => average bitrate,#         DuplicatePackets           => duplicate packets,#         FECPacketsUsed             => Forward Error Connection packets used,#         FECPacketsReceived         => Forward Error Connection packets received,#         LatePackets                => late packets,#         Name                       => BroadcastReceiver name,#         PacketCount                => packet count,#         PacketsLostBeforeTransport => Packets Lost Before Transport,#         PacketsLostInTransport     => Packets Lost In Transport,#         ResendsRequested           => Resends Requested,#         connected_clients          => { #           1 => {#             Addr               => client address,#             PlayerRequestedURL => Player Requested URL,#             ASMRuleBook        => ASM Rule Book,#             Audiences          => Audiences,#             StreamiMimeType    => Mime Type of Stream i,#             StreamiAvgBitRate  => Average BitRate of Stream i,#             User-Agent         => client User Agent,#             IsRDT              => flag: is RDT used?,#             IsUDP              => flag: is UDP used?,#             PlayerStarttime    => Player Start time,#             Port               => client port},#           2 =>  ...#                                            }#                 }#       relay_r2 =>  ...#       }#     }###############################################################################sub Status {    my ( $ret_code, $ret_val, $data_ref );            if ( %NodeLib::prog_by_relay > 0 ) {              # there are active relays            my $rel_ref = &Adaptation::relays_stats;     # gets their statistics      my $cli_ref = &Adaptation::clients_stats;       my $name, $ref;      my %relays;      my $transport;      my $relays_ref;      my $clients_ref;                                               foreach $transport ( keys %{$rel_ref} ) {        if ( keys %{${$rel_ref}{$transport}} ) {          $relays_ref = \%{${$rel_ref}{$transport}};          $clients_ref =  \%{${$cli_ref}{$transport}};                                                   foreach $name ( keys %NodeLib::prog_by_relay ) { # only for relays            $relays{$transport}{$name} = $${relays_ref{$name}};        # created by this node            my $prog = $NodeLib::prog_by_relay{$name};            my $surro = $NodeLib::surr_by_prog{$prog};     # $surro =             my ( $no, $surro2 ) = split /rtsp:\//, $surro; # "rtsp://nodeip/mp"...            my ( $non, $myip, $mount ) = split /\//, $surro2, 3; # the "3" limit is needed to properly match mount points            $mount = "/$mount";            my $cli;            my %cli_found;            foreach $cli ( keys %$clients_ref) {              if ( ${$${clients_ref{$cli}}}{source_url} =~ m/$mount/ ) {                $cli_found{$cli} = $${clients_ref{$cli}};              }            }            $ref = \%cli_found;            if ( keys %cli_found ) {              ${$relays{$transport}{$name}}{connected_clients} = $ref;            } else {              delete ${$relays{$transport}{$name}}{connected_clients};            }          }        }      }      $ret_code = '200';      $ret_val = 'Relay data successfully sent';      $data_ref = \%relays;    }    else {      $ret_code = '404';      $ret_val = 'No active relays found';    }    return { ret_code => $ret_code, ret_val => $ret_val, data_ref => $data_ref }}__END__]]></code></methoddef>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -