root/lang/perl/XMPP-Bomber/trunk/lib/XMPP/Bomber/Role/Client.pm @ 13211

Revision 13211, 1.4 kB (checked in by daisuke, 5 years ago)

more coersion control

  • Property svn:keywords set to Id
Line 
1package XMPP::Bomber::Role::Client;
2use Moose::Role;
3use XMPP::Bomber::Types;
4
5requires 'run';
6
7has 'xmpp_args' => (
8    is => 'rw',
9    isa => 'HashRef',
10    auto_deref => 1,
11    default => sub { +{} }
12);
13
14has 'server' => (
15    is => 'rw',
16    isa => 'XMPP::Bomber::Server',
17    coerce => 1,
18    required => 1,
19);
20
21has 'accounts' => (
22    is => 'rw',
23    isa => 'AccountList',
24    auto_deref => 1,
25    coerce => 1,
26    required => 1,
27);
28
29has 'recipients' => (
30    is => 'rw',
31    isa => 'AccountList',
32    auto_deref => 1,
33);
34
35has 'condvar' => (
36    is => 'rw',
37    default => sub { AnyEvent->condvar }
38);
39
40has 'content_provider' => (
41    is => 'rw',
42    does => 'XMPP::Bomber::Role::ContentProvider',
43    coerce => 1,
44);
45
46has 'recipient_chooser' => (
47    is => 'rw',
48    does => 'XMPP::Bomber::Role::RecipientChooser',
49    coerce => 1,
50);
51
52no Moose;
53
54use Net::XMPP2;
55use Net::XMPP2::Client;
56use XMPP::Bomber::Server;
57
58sub create_client
59{
60    my $self = shift;
61
62    my $client = Net::XMPP2::Client->new( $self->xmpp_args );
63
64    $client->set_exception_cb( sub {
65        print STDERR "Received exception $_[0]\n";
66        $self->condvar->broadcast
67    } );
68    my $server = $self->server;
69
70    foreach my $account ($self->accounts) {
71        $client->add_account(
72            $account->destination,
73            $account->password,
74            $server->hostname,
75            $server->port,
76        )
77    }
78
79    return $client;
80}
81
82
831;
Note: See TracBrowser for help on using the browser.