.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "IKC::Server 3pm" .TH IKC::Server 3pm "2011-08-27" "perl v5.12.4" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" POE::Component::IKC::Server \- POE Inter\-kernel Communication server .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 8 \& use POE; \& use POE::Component::IKC::Server; \& POE::Component::IKC::Server\->spawn( \& ip=>$ip, \& port=>$port, \& name=>\*(AqServer\*(Aq); \& ... \& $poe_kernel\->run(); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module implements a \s-1POE\s0 \s-1IKC\s0 server. A \s-1IKC\s0 server listens for incoming connections from \s-1IKC\s0 clients. When a client connects, it negociates certain connection parameters. After this, the \s-1POE\s0 server and client are pretty much identical. .SH "EXPORTED FUNCTIONS" .IX Header "EXPORTED FUNCTIONS" .ie n .SS """create_ikc_server""" .el .SS "\f(CWcreate_ikc_server\fP" .IX Subsection "create_ikc_server" Syntatic sugar for POE::Component::IKC::Server\->spawn. .SH "CLASS METHODS" .IX Header "CLASS METHODS" .ie n .SS """spawn""" .el .SS "\f(CWspawn\fP" .IX Subsection "spawn" This methods initiates all the work of building the \s-1IKC\s0 server. Parameters are : .ie n .IP """ip""" 3 .el .IP "\f(CWip\fR" 3 .IX Item "ip" Address to listen on. Can be a doted-quad ('127.0.0.1') or a host name ('foo.pied.nu'). Defaults to '0.0.0.0', aka \s-1INADDR_ANY\s0. .ie n .IP """port""" 3 .el .IP "\f(CWport\fR" 3 .IX Item "port" Port to listen on. Can be numeric (80) or a service ('http'). If undefined, will default to 603. If you set the port to 0, a random port will be chosen and \f(CW\*(C`spawn\*(C'\fR will return the port number. .Sp .Vb 2 \& my $port = POE::Component::IKC::Server\->spawn( port => 0 ); \& warn "Listeing on port $port"; .Ve .ie n .IP """unix""" 3 .el .IP "\f(CWunix\fR" 3 .IX Item "unix" Path to the unix-socket to listen on. Note: this path is unlinked before socket is attempted! Buyer beware. .ie n .IP """name""" 3 .el .IP "\f(CWname\fR" 3 .IX Item "name" Local kernel name. This is how we shall \*(L"advertise\*(R" ourself to foreign kernels. It acts as a \*(L"kernel alias\*(R". This parameter is temporary, pending the addition of true kernel names in the \s-1POE\s0 core. This name, and all aliases will be registered with the responder so that you can post to them as if they were remote. .ie n .IP """aliases""" 3 .el .IP "\f(CWaliases\fR" 3 .IX Item "aliases" Arrayref of even more aliases for this kernel. Fun Fun Fun! .ie n .IP """verbose""" 3 .el .IP "\f(CWverbose\fR" 3 .IX Item "verbose" Print extra information to \s-1STDERR\s0 if true. This allows you to see what is going on and potentially trace down problems and stuff. .ie n .IP """processes""" 3 .el .IP "\f(CWprocesses\fR" 3 .IX Item "processes" Activates the pre-forking server code. If set to a positive value, \s-1IKC\s0 will fork processes\-1 children. \s-1IKC\s0 requests are only serviced by the children. Default is 1 (ie, no forking). .ie n .IP """babysit""" 3 .el .IP "\f(CWbabysit\fR" 3 .IX Item "babysit" Time, in seconds, between invocations of the babysitter event. .ie n .IP """connections""" 3 .el .IP "\f(CWconnections\fR" 3 .IX Item "connections" Number of connections a child will accept before exiting. Currently, connections are serviced concurrently, because there's no way to know when we have finished a request. Defaults to 1 (ie, one connection per child). .ie n .IP """concurrency""" 3 .el .IP "\f(CWconcurrency\fR" 3 .IX Item "concurrency" Number of simultaneous connected clients allowed. Defaults to 0 (unlimited). .Sp Note that this is per\-IKC::Server instance; if you have several ways of connecting to a give \s-1IKC\s0 server (for example, both an \s-1TCP/IP\s0 port and unix pipe), they will not share the conncurrent connection count. .ie n .IP """protocol""" 3 .el .IP "\f(CWprotocol\fR" 3 .IX Item "protocol" Which \s-1IKC\s0 negociation protocol to use. The original protocol (\f(CW\*(C`IKC\*(C'\fR) was synchronous and slow. The new protocol (\f(CW\*(C`IKC0\*(C'\fR) sends all information at once. \s-1IKC0\s0 will degrade gracefully to \s-1IKC\s0, if the client and server don't match. .Sp Default is \s-1IKC0\s0. .PP \&\f(CW\*(C`POE::Component::IKC::Server::spawn\*(C'\fR returns \f(CW\*(C`undef()\*(C'\fR, unless you specify a \*(L"port\*(R"=0, in which case, \f(CW\*(C`spawn\*(C'\fR returns the port that was chosen. .SH "EVENTS" .IX Header "EVENTS" .SS "shutdown" .IX Subsection "shutdown" This event causes the server to close it's socket, clean up the shop and head home. Normally it is only posted from IKC::Responder. .SH "BUGS" .IX Header "BUGS" Preforking is something of a hack. In particular, you must make sure that your sessions will permit children exiting. This means, if you have a \&\fIdelay()\fR\-loop, or event loop, children will not exit. Once \s-1POE\s0 gets multicast events, I'll change this behaviour. .SH "AUTHOR" .IX Header "AUTHOR" Philip Gwyn, .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright 1999\-2011 by Philip Gwyn. All rights reserved. .PP This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. .PP See .SH "SEE ALSO" .IX Header "SEE ALSO" \&\s-1POE\s0, POE::Component::IKC::Client