/[cvs]/joko/TestArea/perl/runtime/POE/cluster/two.pl
ViewVC logotype

Annotation of /joko/TestArea/perl/runtime/POE/cluster/two.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Sun May 11 21:48:49 2003 UTC (21 years, 4 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/plain
initial commit

1 joko 1.1 #!/usr/local/bin/perl -w
2     #
3     # This script is an example of a primary/backup architecture. It is meant to be ran with the example named "one.pl".
4     # I like to run one.pl in one window and then two.pl in another and watch them battle it out. Normally one.pl, which
5     # is the bully in this case because of the higher priority number, would always be elected and two.pl would never do
6     # anything but send election requests and get denied. To make things a little more interesting I made one.pl take
7     # a short vacation so that two.pl could get a chance to do something. Enjoy!
8     #
9     # $Id: two.pl,v 1.0 2002-06-03 15:37:19+02 amo Exp amo $
10     #
11    
12    
13     use strict;
14    
15    
16     use POE::Component::Election::Bully;
17     use POE;
18    
19     # these are the nodes participating in the election process
20     my $node2 = new POE::Component::Election::Bully::Node(['127.0.0.1', 5121, 2]);
21    
22    
23     POE::Session->create
24     ( inline_states =>
25     {
26     _start => \&start_session,
27     _stop => sub { print "Session finished\n" },
28     elected2 => \&election_results2,
29     coup2 => sub {
30     print "Session 2 has been overthrown!\n";
31     $_[KERNEL]->delay('do_work2');
32     },
33     do_work2 => \&do_work2,
34     vacation => sub {
35     print "It's time for a vacation!\n";
36     $_[KERNEL]->delay('do_work2');
37     $_[KERNEL]->post('component2', 'stop_election');
38     $_[KERNEL]->delay_add('start_work', $_[ARG0]);
39     },
40     start_work => sub {
41     $_[KERNEL]->post('component2', 'start_election', $node2);
42     },
43     }
44     );
45    
46     $poe_kernel->run();
47    
48     exit;
49    
50    
51     #--- States ---#
52    
53     sub start_session {
54     print "election starting\n";
55    
56     POE::Component::Election::Bully->new
57     ( Alias => 'component2',
58     Port => 5122,
59     Priority => 1,
60     ElectionState => 'elected2',
61     CoupState => 'coup2',
62     RestartTimer => 3,
63     NotifyTimer => 3,
64     Debugging => 0,
65     );
66    
67     $_[KERNEL]->post('component2', 'start_election', $node2);
68     }
69    
70     sub election_results2 {
71     print "Session 2 has been elected!\n";
72     $_[KERNEL]->delay_add('do_work2', 5);
73     }
74    
75     sub do_work2 {
76     print "Session 2 doing some work while elected\n";
77     $_[KERNEL]->delay_add('do_work2', 5);
78     }
79    
80    
81     __END__
82    

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed