libzypp 17.38.8
zypp::PluginScript Class Reference

Interface to plugin scripts using a Stomp inspired communication protocol. More...

#include <zypp/PluginScript.h>

Classes

struct  Impl
 PluginScript implementation. More...

Public Types

using Arguments = std::vector<std::string>
 Commandline arguments passed to a script on open.

Static Public Attributes

static const pid_t NotConnected
 pid_t(-1) constant indicating no connection.

Friends

std::ostream & operator<< (std::ostream &str, const PluginScript &obj)
 relates: PluginScript Stream output

Get/set local timeout settings.

RW_pointer< Impl_pimpl
 Pointer to implementation.
long sendTimeout () const
 Local default timeout (sec.) when sending data.
long receiveTimeout () const
 Local default timeout (sec.) when receiving data.
void sendTimeout (long newval_r)
 Set local default timeout (sec.) when sending data.
void receiveTimeout (long newval_r)
 Set local default timeout (sec.) when receiving data.
void timeout (long newval_r)
 Set local default timeout (sec.) (both: send and receive).
void open ()
 Setup connection and execute script.
void open (const Pathname &script_r)
void open (const Pathname &script_r, const Arguments &args_r)
void open (const Pathname &script_r, const Pathname &chroot_r)
void open (const Pathname &script_r, const Arguments &args_r, const Pathname &chroot_r)
void openChrooted (const Pathname &chroot_r)
 Like open() but runs the script chrooted into chroot_r.
int close ()
 Close any open connection.
void send (const PluginFrame &frame_r) const
 Send a PluginFrame.
PluginFrame receive () const
 Receive a PluginFrame.

Get/set the global timeout settings.

Timeout when sending/receiving data to/from a plugin default to 30 sec.

The value (in seconds) my be changed via the environment variables ZYPP_PLUGIN_SEND_TIMEOUT, ZYPP_PLUGIN_RECEIVE_TIMEOUT or ZYPP_PLUGIN_TIMEOUT (both: send and receive).

static long defaultSendTimeout ()
 Global default timeout (sec.) when sending data.
static long defaultReceiveTimeout ()
 Global default timeout (sec.) when receiving data.
static void defaultSendTimeout (long newval_r)
 Set global default timeout (sec.) when sending data.
static void defaultReceiveTimeout (long newval_r)
 Set global default timeout (sec.) when receiving data.
static void defaultTimeout (long newval_r)
 Set global default timeout (sec.) (both: send and receive).
 PluginScript ()
 Default ctor.
 PluginScript (Pathname script_r)
 Ctor taking script path and no arguments.
 PluginScript (Pathname script_r, Arguments args_r)
 Ctor taking script path and script arguments.
const Pathnamescript () const
 Return the script path if set.
const Argumentsargs () const
 Return the script arguments if set.
bool isOpen () const
 Whether we are connected to a script.
pid_t getPid () const
 Return a connected scripts pid or NotConnected.
Pathname getChroot () const
 Return a connected scripts chroot or an empty Pathname.
int lastReturn () const
 Remembers a scripts return value after close until next open.
const std::string & lastExecError () const
 Remembers a scripts execError string after close until next open.

Detailed Description

Interface to plugin scripts using a Stomp inspired communication protocol.

Note
PluginScript is copyable and assignable, but the connection is shared among multiple copies. It gets automatically closed if the last copy goes out of scope.

Timeout when sending/receiving data to/from a plugin default to 30 sec. The value (in seconds) my be changed via the environment variables ZYPP_PLUGIN_SEND_TIMEOUT, ZYPP_PLUGIN_RECEIVE_TIMEOUT or ZYPP_PLUGIN_TIMEOUT (both: send and receive).

// Setup comnnection to plugin script
args.push_back( "-v" );
scr.open( "/soem/testplugin", args );
// send frame to plugin
PluginFrame f( "COMMAND" );
f.setHeader( "key", "value" );
f.setBody( "some\ndata" );
scr.send( f );
// receive frame from plugin
PluginFrame r( scr.receive() );
// explicitly close or let PluginScript go out of scope
scr.close();
Command frame for communication with PluginScript.
Definition PluginFrame.h:42
PluginFrame receive() const
Receive a PluginFrame.
std::vector< std::string > Arguments
Commandline arguments passed to a script on open.
void send(const PluginFrame &frame_r) const
Send a PluginFrame.
PluginScript()
Default ctor.
int close()
Close any open connection.
void open()
Setup connection and execute script.
const Arguments & args() const
Return the script arguments if set.
See also
https://stomp.github.io

Definition at line 62 of file PluginScript.h.

Member Typedef Documentation

◆ Arguments

using zypp::PluginScript::Arguments = std::vector<std::string>

Commandline arguments passed to a script on open.

Definition at line 68 of file PluginScript.h.

Constructor & Destructor Documentation

◆ PluginScript() [1/3]

zypp::PluginScript::PluginScript ( )

Default ctor.

Definition at line 499 of file PluginScript.cc.

◆ PluginScript() [2/3]

zypp::PluginScript::PluginScript ( Pathname script_r)

Ctor taking script path and no arguments.

Definition at line 503 of file PluginScript.cc.

◆ PluginScript() [3/3]

zypp::PluginScript::PluginScript ( Pathname script_r,
Arguments args_r )

Ctor taking script path and script arguments.

Definition at line 507 of file PluginScript.cc.

Member Function Documentation

◆ defaultSendTimeout() [1/2]

long zypp::PluginScript::defaultSendTimeout ( )
static

Global default timeout (sec.) when sending data.

Definition at line 475 of file PluginScript.cc.

◆ defaultReceiveTimeout() [1/2]

long zypp::PluginScript::defaultReceiveTimeout ( )
static

Global default timeout (sec.) when receiving data.

Definition at line 478 of file PluginScript.cc.

◆ defaultSendTimeout() [2/2]

void zypp::PluginScript::defaultSendTimeout ( long newval_r)
static

Set global default timeout (sec.) when sending data.

Definition at line 481 of file PluginScript.cc.

◆ defaultReceiveTimeout() [2/2]

void zypp::PluginScript::defaultReceiveTimeout ( long newval_r)
static

Set global default timeout (sec.) when receiving data.

Definition at line 484 of file PluginScript.cc.

◆ defaultTimeout()

void zypp::PluginScript::defaultTimeout ( long newval_r)
inlinestatic

Set global default timeout (sec.) (both: send and receive).

Definition at line 93 of file PluginScript.h.

◆ script()

const Pathname & zypp::PluginScript::script ( ) const

Return the script path if set.

Definition at line 511 of file PluginScript.cc.

◆ args()

const PluginScript::Arguments & zypp::PluginScript::args ( ) const

Return the script arguments if set.

Definition at line 514 of file PluginScript.cc.

◆ isOpen()

bool zypp::PluginScript::isOpen ( ) const

Whether we are connected to a script.

Definition at line 517 of file PluginScript.cc.

◆ getPid()

pid_t zypp::PluginScript::getPid ( ) const

Return a connected scripts pid or NotConnected.

Definition at line 520 of file PluginScript.cc.

◆ getChroot()

Pathname zypp::PluginScript::getChroot ( ) const

Return a connected scripts chroot or an empty Pathname.

Definition at line 523 of file PluginScript.cc.

◆ lastReturn()

int zypp::PluginScript::lastReturn ( ) const

Remembers a scripts return value after close until next open.

Definition at line 526 of file PluginScript.cc.

◆ lastExecError()

const std::string & zypp::PluginScript::lastExecError ( ) const

Remembers a scripts execError string after close until next open.

See also
ExternalProgram::execError.

Definition at line 529 of file PluginScript.cc.

◆ sendTimeout() [1/2]

long zypp::PluginScript::sendTimeout ( ) const

Local default timeout (sec.) when sending data.

Definition at line 487 of file PluginScript.cc.

◆ receiveTimeout() [1/2]

long zypp::PluginScript::receiveTimeout ( ) const

Local default timeout (sec.) when receiving data.

Definition at line 490 of file PluginScript.cc.

◆ sendTimeout() [2/2]

void zypp::PluginScript::sendTimeout ( long newval_r)

Set local default timeout (sec.) when sending data.

Definition at line 493 of file PluginScript.cc.

◆ receiveTimeout() [2/2]

void zypp::PluginScript::receiveTimeout ( long newval_r)

Set local default timeout (sec.) when receiving data.

Definition at line 496 of file PluginScript.cc.

◆ timeout()

void zypp::PluginScript::timeout ( long newval_r)
inline

Set local default timeout (sec.) (both: send and receive).

Definition at line 147 of file PluginScript.h.

◆ open() [1/5]

void zypp::PluginScript::open ( )

Setup connection and execute script.

Exceptions
PluginScriptExceptionif already connected to a script
PluginScriptExceptionif script does not exist or is not executable
PluginScriptExceptionon error

Definition at line 532 of file PluginScript.cc.

◆ open() [2/5]

void zypp::PluginScript::open ( const Pathname & script_r)

Definition at line 535 of file PluginScript.cc.

◆ open() [3/5]

void zypp::PluginScript::open ( const Pathname & script_r,
const Arguments & args_r )

Definition at line 538 of file PluginScript.cc.

◆ open() [4/5]

void zypp::PluginScript::open ( const Pathname & script_r,
const Pathname & chroot_r )

Definition at line 541 of file PluginScript.cc.

◆ open() [5/5]

void zypp::PluginScript::open ( const Pathname & script_r,
const Arguments & args_r,
const Pathname & chroot_r )

Definition at line 544 of file PluginScript.cc.

◆ openChrooted()

void zypp::PluginScript::openChrooted ( const Pathname & chroot_r)

Like open() but runs the script chrooted into chroot_r.

Uses the script path and arguments stored via setScript() and previous open() calls (the same values that plain open() uses).

Exceptions
PluginScriptExceptionif already connected to a script
PluginScriptExceptionif script does not exist or is not executable
PluginScriptExceptionon error

Definition at line 547 of file PluginScript.cc.

◆ close()

int zypp::PluginScript::close ( )

Close any open connection.

Definition at line 550 of file PluginScript.cc.

◆ send()

void zypp::PluginScript::send ( const PluginFrame & frame_r) const

Send a PluginFrame.

Exceptions
PluginScriptNotConnected
PluginScriptSendTimeout
PluginScriptDiedUnexpectedly(does not close)
PluginScriptExceptionon error

Definition at line 553 of file PluginScript.cc.

◆ receive()

PluginFrame zypp::PluginScript::receive ( ) const

Receive a PluginFrame.

Exceptions
PluginScriptNotConnected
PluginScriptReceiveTimeout
PluginScriptDiedUnexpectedly(does not close)
PluginScriptExceptionon error

Definition at line 556 of file PluginScript.cc.

◆ operator<<

std::ostream & operator<< ( std::ostream & str,
const PluginScript & obj )
friend

relates: PluginScript Stream output

Definition at line 561 of file PluginScript.cc.

Member Data Documentation

◆ NotConnected

const pid_t zypp::PluginScript::NotConnected
static

pid_t(-1) constant indicating no connection.

Definition at line 71 of file PluginScript.h.

◆ _pimpl

RW_pointer<Impl> zypp::PluginScript::_pimpl
private

Pointer to implementation.

Definition at line 210 of file PluginScript.h.


The documentation for this class was generated from the following files: