AC-MrGamoo

 view release on metacpan or  search on metacpan

lib/AC/MrGamoo/EUConsole.pm  view on Meta::CPAN

# -*- perl -*-

# Copyright (c) 2010 AdCopy
# Author: Jeff Weisberg
# Created: 2010-Jan-18 13:20 (EST)
# Function: send messages to end-user console
#
# $Id: EUConsole.pm,v 1.1 2010/11/01 18:41:41 jaw Exp $

package AC::MrGamoo::EUConsole;
use AC::MrGamoo::Debug 'euconsole';
use AC::MrGamoo::MySelf;
use AC::Daemon;
use AC::MrGamoo::Protocol;
use Socket;
use strict;


sub new {
    my $class  = shift;
    my $jobid  = shift;
    my $console = shift;	# ipaddr:port

    return bless {}, $class unless $console;

    # open socket to end-user console session, if requested
    my($addr, $port) = split /:/, $console;
    my $ip = inet_aton($addr);

    my $fd;
    my $i = socket($fd, PF_INET, SOCK_DGRAM, 0);
    $i = connect( $fd, sockaddr_in($port, $ip) );
    unless( $i ){
        verbose("cannot connect to user console: $!");
        return;
    }

    return bless {
        fd 	=> $fd,
        jobid	=> $jobid,
        msgid 	=> (time() & 0xFFFF),
    }, $class;
}

sub send_msg {
    my $me = shift;
    my $type = shift;
    my $msg  = shift;

    my $fd = $me->{fd};
    return unless $fd;

    my $req = AC::MrGamoo::Protocol->encode_request( {
        type		=> 'mrgamoo_diagmsg',
        want_reply	=> 0,
        msgid		=> $me->{msgid}++,
    }, {
        jobid		=> $me->{jobid},
        server_id	=> my_server_id(),
        type		=> $type,
        msg		=> $msg,
    } );

    send $fd, $req, 0;
}

1;



( run in 1.825 second using v1.01-cache-2.11-cpan-ceb78f64989 )