summaryrefslogtreecommitdiffstats
path: root/lib/ASM/Fifo.pm
blob: 81170c5dd268e87a490a1c980c4ba108058cb5ac (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package ASM::Fifo;

use warnings;
use strict;
use POSIX qw(mkfifo);
use Fcntl;

sub new
{
  my $module = shift;
  my @args = @_;
  my $self = {
               "irc" => $args[0],
               "conn" => $args[1]
  };
  mkfifo("fifo", 0777);
  open( my $fifo, "+<", "fifo" );
  $self->{fifo} = $fifo;
  bless($self);
  $self->{irc}->addfh( $self->{fifo}, $self->can('process'), 'r', $self );
  return $self;
}

sub process
{
  my ($self, $fifo) = @_;
  my $lines;
  $fifo->sysread($lines, 10240);
  foreach my $line (split /\n/, $lines) {
  $self->{conn}->privmsg($::settings->{masterchan}, $line); }
  return 0;
}

1;