summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/ASM/Fifo.pm33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/ASM/Fifo.pm b/lib/ASM/Fifo.pm
new file mode 100644
index 0000000..1a480f8
--- /dev/null
+++ b/lib/ASM/Fifo.pm
@@ -0,0 +1,33 @@
+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);
+ sysopen( my $fifo, "fifo", O_NONBLOCK );
+ $self->{fifo} = $fifo;
+ bless($self);
+ $self->{irc}->addfh( $self->{fifo}, sub { $self->process(@_); }, 'r' );
+ return $self;
+}
+
+sub process
+{
+ my ($self, $fifo) = @_;
+ my $line = readline($fifo);
+ return unless defined($line);
+ chomp $line;
+ $self->{conn}->privmsg($::settings->{masterchan}, $line);
+}
+
+1;