The guts of the new Msg system
[spider.git] / perl / IntMsg.pm
diff --git a/perl/IntMsg.pm b/perl/IntMsg.pm
new file mode 100644 (file)
index 0000000..150ec91
--- /dev/null
@@ -0,0 +1,37 @@
+#
+# This class is the internal subclass that deals with the internal port 27754
+# communications for Msg.pm
+#
+# $Id$
+#
+# Copyright (c) 2001 - Dirk Koopman G1TLH
+#
+
+package IntMsg;
+
+use strict;
+use Msg;
+
+use vars qw(@ISA);
+
+@ISA = qw(Msg);
+
+sub enqueue
+{
+       my ($conn, $msg) = @_;
+       $msg =~ s/([\%\x00-\x1f\x7f-\xff])/sprintf("%%%02X", ord($1))/eg; 
+    push (@{$conn->{outqueue}}, $msg . "\n");
+}
+
+sub dequeue
+{
+       my $conn = shift;
+       my $msg;
+       
+       while ($msg = shift @{$conn->{inqueue}}){
+               $msg =~ s/\%([2-9A-F][0-9A-F])/chr(hex($1))/eg;
+               $msg =~ s/[\x00-\x08\x0a-\x1f\x80-\x9f]/./g;         # immutable CSI sequence + control characters
+               &{$conn->{rproc}}($conn, $msg, $!);
+               $! = 0;
+       }
+}