- # mod SirensLove use for OPK with SLClient
- # Later 16/7/2013 OPK SVN r8636 is now work on tRO
- package Sirens;
- use strict;
- use Globals;
- use Plugins;
- use Log qw(error);
- use Misc qw(relog);
- use Utils qw(dataWaiting);
- use IO::Socket::INET;
- use Network::Send;
- Plugins::register('Sirens', 'Sirens Server Plugin', \&onUnload);
- my $hooks = Plugins::addHooks(
- ['initialized', \&onInitialized],
- ['mainLoop_pre', \&onMainLoopPre],
- ['parseMsg/pre', \&onParseMsg]
- );
- use Utils qw(timeOut timeConvert);
- ##HH 29-Nov-2008
- our $waittime;
- our $timesend;
- sub onUnload {
- Plugins::delHooks($hooks);
- };
- my $sirens_host = '127.0.0.1';
- my $sirens_port = 21115;
- my ($sirens_socket, $failecount);
- sub onInitialized {
- $sirens_socket = IO::Socket::INET->new();
- connect2sirens(\$sirens_socket);
- }
- sub onMainLoopPre {
- if (dataWaiting(\$sirens_socket)) {
- my $buf;
- $sirens_socket->recv($buf, 512);
- # $net->serverSend($buf) if (length($buf) > 1);
- $messageSender->sendToServer($buf) if (length($buf) > 1);
- ##HH 29-Nov-2008
- $timesend =0;
- # error("Plugin read 02A7 >> KORE.\n");
- }
- if ($failecount >= 3) {
- quit();
- }
- ###HH 29-Nov-2008
- if ( timeOut($timesend,185) && $timesend ) {
- # $interface->writeoutput("!!! Reconnect to MukaServer !!! \n");
- error("Reconnect to SirensLove at 21115.\n");
- my $connected = connect2sirens(\$sirens_socket);
- if ($connected ) {
- $timesend=0;
- }
- }
- ###End HH
- }
- sub onParseMsg {
- my $args = $_[1];
- my $switch = $args->{switch};
- my $msg = $args->{msg};
- my $msg_size = $args->{msg_size};
- if ($switch eq '02A6') {
- unless ($sirens_socket->connected()) {
- return unless (connect2sirens(\$sirens_socket));
- }
- $msg_size = unpack("S1", substr($msg, 2, 2));
- $sirens_socket->send(substr($msg, 0, $msg_size));
- ##HH 29-Nov-2008
- $timesend=time;
- }
- }
- sub connect2sirens {;
- my ($r_socket) = @_;
- ${$r_socket} = IO::Socket::INET->new(
- PeerAddr => $sirens_host,
- PeerPort => $sirens_port,
- Proto => 'tcp'
- );
- if (${$r_socket} && inet_aton(${$r_socket}->peerhost()) eq inet_aton($sirens_host)) {
- $failecount = 0;
- return 1;
- error("Sirens Server connected.\n");
- } else {
- error("Can't connect to Sirens Server.\n");
- relog() if ($conState == 5);
- $failecount++;
- return 0;
- }
- }
- return 1;
Tuesday, August 6, 2013
SirensLove use for OPK with SLClient
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment