App-EventStreamr

 view release on metacpan or  search on metacpan

lib/App/EventStreamr/Utils.pm  view on Meta::CPAN

package App::EventStreamr::Utils;
use Moo;
use IO::Socket::INET; # System Class
use Proc::ProcessTable; # libproc-processtable-perl
use experimental 'switch';
use Data::Dumper;

# ABSTRACT: Utils

our $VERSION = '0.5'; # VERSION: Generated by DZP::OurPkg:Version


sub test {
  my $self = shift;
  $self->{portstate} = port("localhost","1234");
  $self->{get_pid_command} = get_pid_command("video0","ffmpeg -f video4linux2 -s vga -r 25 -i /dev/video0 -target pal-dv - | dvsource-file /dev/stdin -h localhost -p 1234","v4l");
  return;
}

sub port {
  my $self = shift;
  my ($host,$port) = @_;
  my $state;
  my $sock = new IO::Socket::INET ( PeerAddr => $host,
                                    PeerPort => $port,
                                    Proto    => 'tcp'
                                  );
  if ($sock) {
    $state = 1;
    $sock->close;
  } else {
    $state = 0;
  }
  return $state;
}

sub get_pid_state {
  my $self = shift;
  my ($pid) = @_;
  my $return;
  
  $return->{pid} = $pid; 
  $return->{running} = kill 0, $pid;

  return $return;
}

sub get_pid_command {
  my $self = shift;
  my ($id,$command,$type) = @_;
  my $regex;
  my $return;
  
  given ($type) {
    when ("v4l")      { $regex = "ffmpeg.+\\/dev\\/$id.*"; }
    when ("dv")       { $regex = "dvgrab.+$id.*"; }
    when ("stream")   { $regex = "ffmpeg2theora.+--title.$id.+"; }
    when ("mixer")    { $regex = "dvswitch -h 0.0.0.0 -p.+"; }
    default           { $regex = $command }
  }

  # this is hacky.. but it's late and I'm tired!
  $regex = "\\/usr\\/bin\\/plackup.*" if ($id eq 'api');

  my $pt = Proc::ProcessTable->new;
  my @procs = grep { $_->cmndline =~ /$regex/ } @{ $pt->table };



( run in 0.597 second using v1.01-cache-2.11-cpan-39bf76dae61 )