Package com.tailf.dp
Interface DpActionCallback
- All Known Implementing Classes:
ActionCallbackProxy
public interface DpActionCallback
This interface is used for the user actions callbacks.
Actions are specified in the data model (see tailf_yang_extensions(5)). The actionpoint specifies that the action is implemented as a callback function.
Unlike the callbacks for data and validation, there is no transaction associated with an action callback. However an action is always associated with a user session (NETCONF, CLI, etc), and only one action at a time can be invoked from a given user session. Hence the associated DpUserInfo is passed to the callbacks.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
static final int
static final int
static final int
static final int
-
Method Summary
Modifier and TypeMethodDescriptionvoid
abort
(DpActionTrans actx) The abort() callback will be called for user initiated abort of an action.action
(DpActionTrans actx, ConfTag name, ConfObject[] kp, ConfXMLParam[] params) The action() callback receives all the parameters pertaining to the action: The name argument is a pointer to the action name as defined in YANG model, the kp argument gives the path through the XML tree, and finally the params argument is a representation of the params element of the XML instance document provided with the invocation.Return the name of the action point.String[]
command
(DpActionTrans actx, String cmdname, String cmdpath, String[] params) The command() callback is invoked for CLI callback commands.completion
(DpActionTrans actx, char cliStyle, String token, char completionChar, ConfObject[] kp, String cmdPath, String cmdParamId, ConfQname simpleType, String extra) The completion() callback is invoked for CLI completion and information.void
init
(DpActionTrans actx) Similar to the init() callback for external data bases.int
mask()
Mask of flags for each method that is supported by this callback
-
Field Details
-
M_INIT
static final int M_INIT- See Also:
-
M_ABORT
static final int M_ABORT- See Also:
-
M_ACTION
static final int M_ACTION- See Also:
-
M_COMMAND
static final int M_COMMAND- See Also:
-
M_COMPLETION
static final int M_COMPLETION- See Also:
-
-
Method Details
-
mask
int mask()Mask of flags for each method that is supported by this callback -
actionpoint
String actionpoint()Return the name of the action point. -
init
Similar to the init() callback for external data bases. This socket will be used for the invocation of the action() callback, which implements the actual action. However note that unlike the callbacks for external data bases and validation, both callbacks are registered for each action point (i.e. different action points can have different init() callbacks), and there is no finish() callback - the action is completed when the action() callback returns.- Parameters:
actx
- Action transaction context- Throws:
DpCallbackException
- Callback method failed.
-
abort
The abort() callback will be called for user initiated abort of an action. The abort() callback will be called in a separate thread from the thread that is executing the action() callback. It is the responsibility of the abort() call to stop the action thread execution. There are two ways that the action() execution could be terminated. The simple solution is that the action() implementation itself checks the action transaction state by a call toDpActionTrans.getActionState()
. In this case the abort() can have an empty implementation since the state will implicitly be set toDpActionTrans.STATE_ABORTED
. However the above scenario is often not sufficient because the action() execution thread is busy and not able to check the state. In this case, the abort() callback needs to get hold of the execution action() thread and intervene to stop the execution. To be able to do this there need to be some information carried in DpActionTrans instance that makes this possible. Here using theDpTrans.getTransactionUserOpaque()
is recommended. For instance the action() callback can initially callDpTrans.setTransactionUserOpaque(Object)
with the object being the current thread using Thread.currentThread(). The abort() can then retrieve that Thread usingDpTrans.getTransactionUserOpaque()
and make aThread.interrupt()
call, under the assumption that the action() implementation is sensitive to interrupts and handles InterruptedException.- Parameters:
actx
- The DpActionTrans instance, same as for the running action.- Throws:
DpCallbackException
-
action
ConfXMLParam[] action(DpActionTrans actx, ConfTag name, ConfObject[] kp, ConfXMLParam[] params) throws DpCallbackException The action() callback receives all the parameters pertaining to the action: The name argument is a pointer to the action name as defined in YANG model, the kp argument gives the path through the XML tree, and finally the params argument is a representation of the params element of the XML instance document provided with the invocation.- Parameters:
actx
- Action transaction contextname
- Action namekp
- Keypath array. kp[0] is the leaf.params
- Action parameters- Throws:
DpCallbackException
- Callback method failed.
-
command
String[] command(DpActionTrans actx, String cmdname, String cmdpath, String[] params) throws DpCallbackException The command() callback is invoked for CLI callback commands. As the parameters in this case are all in string form, they are passed as an array of strings.- Parameters:
actx
- Action transaction contextcmdname
- Command namecmdpath
- Command pathparams
- Command parameters- Throws:
DpCallbackException
- Callback method failed
-
completion
Completion completion(DpActionTrans actx, char cliStyle, String token, char completionChar, ConfObject[] kp, String cmdPath, String cmdParamId, ConfQname simpleType, String extra) throws DpCallbackException The completion() callback is invoked for CLI completion and information. It must result in aCompletion
class instance. It is invoked for yang model elements with the directive tailf:cli-completion-actionpoint as well as model list elements with directives tailf:cli-custom-range-actionpoint or tailf:cli-custom-range-enumerator. Also for the corresponding directives in a clispec.- Parameters:
actx
- Action transaction contextcliStyle
- One of J, C or I for juniper, cisco-xr or cisco-iostoken
- Parameter of the CLI command line that the callback invocation pertains tocompletionChar
- The char the user typed on of '\t', '?' or ' 'kp
- Identifies model element path that the callback pertains to or null if not applicablecmdPath
- String giving the full path of the commandcmdParamId
- The cli-completion-id if such is given in yang model or clispec.simpleType
- If the invocation pertains to an element that has a type definition, the simpleType identifies the typeextra
- The extra argument is currently unused (always null).- Returns:
- Completion object with the relevant completion structure.
- Throws:
DpCallbackException
-