Y2ProgramComponent Class Reference

#include <Y2ProgramComponent.h>

Inheritance diagram for Y2ProgramComponent:
Y2Component

List of all members.

Public Member Functions

 Y2ProgramComponent (string chroot_path, string binpath, const char *component_name, bool non_y2, int level)
 ~Y2ProgramComponent ()
string name () const
YCPValue evaluate (const YCPValue &command)
void result (const YCPValue &result)
void setServerOptions (int argc, char **argv)
YCPValue doActualWork (const YCPList &arglist, Y2Component *user_interface)
void sendToExternal (const string &)
YCPValue receiveFromExternal ()
bool remote () const

Private Member Functions

void launchExternalProgram (char **argv)
void terminateExternalProgram ()
void sendToExternal (const YCPValue &)
bool externalProgramOK () const

Private Attributes

string chroot_path
string bin_file
bool is_non_y2
string component_name
int argc
char ** argv
int to_external [2]
int from_external [2]
pid_t pid
Parser parser
int level

Constructor & Destructor Documentation

Y2ProgramComponent::Y2ProgramComponent ( string  chroot_path,
string  binpath,
const char *  component_name,
bool  non_y2,
int  level 
)
Y2ProgramComponent::~Y2ProgramComponent (  ) 

Frees internal data.

References pid, and terminateExternalProgram().


Member Function Documentation

YCPValue Y2ProgramComponent::doActualWork ( const YCPList arglist,
Y2Component user_interface 
) [virtual]

Launches the program with the previously set parameters

Reimplemented from Y2Component.

References argc, argv, Y2Component::evaluate(), is_non_y2, YCPElement::isNull(), launchExternalProgram(), name(), pid, receiveFromExternal(), sendToExternal(), YCPList::size(), YCPList::value(), and y2debug.

YCPValue Y2ProgramComponent::evaluate ( const YCPValue command  )  [virtual]

Let the server evaluate a command.

This method is only valid, if the component is a server.

Reimplemented from Y2Component.

References argc, argv, is_non_y2, YCPElement::isNull(), launchExternalProgram(), name(), pid, receiveFromExternal(), sendToExternal(), and y2error.

bool Y2ProgramComponent::externalProgramOK (  )  const [private]

Determines, if the external program is running.

References pid.

Referenced by receiveFromExternal(), and sendToExternal().

void Y2ProgramComponent::launchExternalProgram ( char **  argv  )  [private]

Lauches the external programm in a new process.

Returns:
true, if this was successful.

References bin_file, chroot_path, from_external, level, parser, pid, ExternalProgram::renumber_fd(), Parser::setInput(), to_external, y2debug, and y2error.

Referenced by doActualWork(), and evaluate().

string Y2ProgramComponent::name (  )  const [virtual]

Returns the name of this component.

Implements Y2Component.

References component_name.

Referenced by doActualWork(), evaluate(), and Y2SystemNamespace::useRemote().

YCPValue Y2ProgramComponent::receiveFromExternal (  ) 

Receives a YCP value from the external program.

References bin_file, externalProgramOK(), YCPElement::isNull(), Parser::parse(), parser, y2error, and y2milestone.

Referenced by doActualWork(), and evaluate().

bool Y2ProgramComponent::remote (  )  const [virtual]

Reimplemented from Y2Component.

void Y2ProgramComponent::result ( const YCPValue result  )  [virtual]

Tells this server, that the client doesn't need it's services any longer and that the exit code of the client is result.

This method is only valid, if the component is a server.

Reimplemented from Y2Component.

References YCPTerm::add(), pid, sendToExternal(), terminateExternalProgram(), and y2milestone.

void Y2ProgramComponent::sendToExternal ( const YCPValue value  )  [private]

Send a YCP value to the external program

References sendToExternal().

void Y2ProgramComponent::sendToExternal ( const string &  value  ) 
void Y2ProgramComponent::setServerOptions ( int  argc,
char **  argv 
) [virtual]

Sets the commandline options of the server.

This method is only valid, if the component is a server.

Reimplemented from Y2Component.

void Y2ProgramComponent::terminateExternalProgram (  )  [private]

Kills the external program (that is process) with SIGQUIT

References from_external, pid, and to_external.

Referenced by result(), sendToExternal(), and ~Y2ProgramComponent().


Member Data Documentation

int Y2ProgramComponent::argc [private]

Stores options for a server program

Referenced by doActualWork(), and evaluate().

char** Y2ProgramComponent::argv [private]

Stores options for a server program

Referenced by doActualWork(), and evaluate().

string Y2ProgramComponent::bin_file [private]

Filename of the executable binary.

Referenced by launchExternalProgram(), receiveFromExternal(), and sendToExternal().

Chroot path for the program.

Referenced by launchExternalProgram().

Name of the component that is implemented by the program

Referenced by name().

Filehandles of pipe from external programm

Referenced by launchExternalProgram(), and terminateExternalProgram().

Specifies whether this component is a ycp program or a shell and such like.

Referenced by doActualWork(), evaluate(), and sendToExternal().

The component level this program was started in. For example programs started from floppy get the component level 0.

Referenced by launchExternalProgram().

Used to parse the values the external program sends

Referenced by launchExternalProgram(), and receiveFromExternal().

pid_t Y2ProgramComponent::pid [private]

Process ID of external process. This is -1, if the process is not yet launched.

Referenced by doActualWork(), evaluate(), externalProgramOK(), launchExternalProgram(), result(), terminateExternalProgram(), and ~Y2ProgramComponent().

Filehandles of pipe to external programm

Referenced by launchExternalProgram(), sendToExternal(), and terminateExternalProgram().


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

Generated on a sunny day for yast2-core by doxygen 1.6.3