]> scm.dxcluster.org Git - spider.git/blob - perl/QXProt/QXR.pm
ad23e2b85543b47506fabce99b9998fc51fa4d13
[spider.git] / perl / QXProt / QXR.pm
1
2 #
3 # This module is part of the new protocal mode for a dx cluster
4 #
5 # This module handles the Routing message between nodes
6 #
7 # Copyright (c) 2003 Dirk Koopman G1TLH
8 #
9 # $Id$
10
11
12 package QXR;
13
14 use strict;
15
16 use vars qw(@ISA $VERSION $BRANCH);
17 @ISA = qw(QXProt);
18
19 $VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
20 $BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
21 $main::build += $VERSION;
22 $main::branch += $BRANCH;
23
24 sub handle
25 {
26         my ($self, $to, $from, $msgid, $line) = @_;
27         
28         my @f = split /\^/, $line;
29  
30 }
31
32 sub gen
33 {
34         my $self = shift;
35         my @out = ('R', $self->call, "DXSpider", ($main::version + 53) * 100, $main::build);
36         if (my $pass = $self->user->passphrase) {
37                 my $inp = Verify->new;
38                 push @out, $inp->challenge, $inp->response($pass, $self->call, $main::mycall);
39         }
40         return $self->frame(@out);
41 }
42
43 1;
44
45 sub gen2
46 {
47         my $self = shift;
48         
49         my $node = shift;
50         my $sort = shift;
51         my @out;
52         my $dxchan;
53         
54         while (@_) {
55                 my $str = '';
56                 for (; @_ && length $str <= 230;) {
57                         my $ref = shift;
58                         my $call = $ref->call;
59                         my $flag = 0;
60                         
61                         $flag += 1 if $ref->here;
62                         $flag += 2 if $ref->conf;
63                         if ($ref->is_node) {
64                                 my $ping = int($ref->pingave * 10);
65                                 $str .= "^N$flag$call,$ping";
66                                 my $v = $ref->build || $ref->version;
67                                 $str .= ",$v" if defined $v;
68                         } else {
69                                 $str .= "^U$flag$call";
70                         }
71                 }
72                 push @out, $str if $str;
73         }
74         my $n = @out;
75         my $h = get_hops(90);
76         @out = map { sprintf "PC90^%s^%X^%s%d%s^%s^", $node->call, $main::systime, $sort, --$n, $_, $h } @out;
77         return @out;
78 }