.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" 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" '' . ds C` . ds C' '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. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" 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 "Net::CLI::Interact::ActionSet 3pm" .TH Net::CLI::Interact::ActionSet 3pm "2014-09-29" "perl v5.20.1" "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" Net::CLI::Interact::ActionSet \- Conversation of Send and Match Actions .SH "VERSION" .IX Header "VERSION" version 2.142720 .SH "DESCRIPTION" .IX Header "DESCRIPTION" This class is used internally by Net::CLI::Interact and it's unlikely that an end-user will need to make use of ActionSet objects directly. The interface is documented here as a matter of record. .PP An ActionSet comprises a sequence (usefully, two or more) of Actions which describe a conversation with a connected network device. Actions will alternate between type \f(CW\*(C`send\*(C'\fR and \&\f(CW\*(C`match\*(C'\fR, perhaps not in their original Phrasebook definition, but certainly by the time they are used. .PP If the first Action is of type \f(CW\*(C`send\*(C'\fR then the ActionSet is a normal sequence of \*(L"send a command\*(R" then \*(L"match a response\*(R", perhaps repeated. If the first Action is of type \f(CW\*(C`match\*(C'\fR then the ActionSet represents a \f(CW\*(C`continuation\*(C'\fR, which is the method of dealing with paged output. .SH "INTERFACE" .IX Header "INTERFACE" .SS "default_continuation" .IX Subsection "default_continuation" An ActionSet (\f(CW\*(C`match\*(C'\fR then \f(CW\*(C`send\*(C'\fR) which will be available for use on all commands sent from this ActionSet. An alternative to explicitly describing the Continuation sequence within the Phrasebook. .SS "current_match" .IX Subsection "current_match" A stash for the current Prompt (regular expression reference) which Net::CLI::Interact expects to see after each command. This is passed into the constructor and is used when padding Match Actions into the ActionSet (see \&\f(CW\*(C`execute\*(C'\fR, below). .SS "clone" .IX Subsection "clone" Returns a new ActionSet which is a shallow clone of the existing one. All the reference based slots will share data, but you can add (for example) a \&\f(CW\*(C`current_match\*(C'\fR without affecting the original ActionSet. Used when preparing to execute an ActionSet which has been retrieved from the Phrasebook. .SS "apply_params" .IX Subsection "apply_params" Accepts a list of parameters which will be used when \f(CW\*(C`sprintf\*(C'\fR is called on each Send Action in the set. You must supply sufficient parameters as a list for \fIall\fR Send Actions in the set, and they will be popped off and stashed with the Action(s) according to how many are required. .SS "register_callback" .IX Subsection "register_callback" Allows the Transport to be registered such that when the ActionSet is executed, commands are sent to the registered callback subroutine. May be called more than once, and on execution each of the callbacks will be run, in turn and in order. .SS "execute" .IX Subsection "execute" The business end of this class, where the sequence of Actions is prepared for execution and then control passed to the Transport. This process is split into a number of phases: .ie n .IP "Pad ""send"" with ""match""" 4 .el .IP "Pad \f(CWsend\fR with \f(CWmatch\fR" 4 .IX Item "Pad send with match" The Phrasebook allows missing out of the Match statements between Send statements, when they are expected to be the same as the \f(CW\*(C`current_match\*(C'\fR. This phase inserts Match statements to restore a complete ActionSet definition. .ie n .IP "Forward ""continuation"" to ""match""" 4 .el .IP "Forward \f(CWcontinuation\fR to \f(CWmatch\fR" 4 .IX Item "Forward continuation to match" In the Phrasebook a user defines a Continuation (\f(CW\*(C`match\*(C'\fR, then \f(CW\*(C`send\*(C'\fR) following a Send statement (because it deals with the response to the sent command). However they are actually used by the Match, as it's the Match which captures output. .Sp This phase copies Continuation ActionSets from Send statements to following Match statements in the ActionSet. It also performs a similar action using the \&\f(CW\*(C`default_continuation\*(C'\fR if one is set and there's no existing Continuation configured. .IP "Callback(s)" 4 .IX Item "Callback(s)" Here the registered callbacks are executed (i.e. data is sent to the Transport). .IP "Marshall Responses" 4 .IX Item "Marshall Responses" Finally, responses which are stashed in the Match Actions are copied back to the Send actions, as more logically they are responses to commands sent. The ActionSet is now ready for access to retrieve the \f(CW\*(C`last_response\*(C'\fR from the device. .SH "COMPOSITION" .IX Header "COMPOSITION" See the following for further interface details: .IP "\(bu" 4 Net::CLI::Interact::Role::Iterator .SH "AUTHOR" .IX Header "AUTHOR" Oliver Gorwits .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" This software is copyright (c) 2014 by Oliver Gorwits. .PP This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.