X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fbase%2Fconsole.h;h=e730b40ee97a5dd4c023ad6176fe22b85bcb2e22;hb=e246e0ded446974b388f1e819bdbdb446ae4429f;hp=bfa0240704533477b345eddc44acbbb6c0e1a0de;hpb=a1664e81dd83e11828909d10b629ed04ea7d3467;p=vuplus_dvbapp diff --git a/lib/base/console.h b/lib/base/console.h index bfa0240..e730b40 100644 --- a/lib/base/console.h +++ b/lib/base/console.h @@ -1,46 +1,53 @@ #ifndef __LIB_BASE_CONSOLE_H__ #define __LIB_BASE_CONSOLE_H__ +#include "Python.h" #include #include #include #include -#ifndef SWIG struct queue_data { queue_data( char *data, int len ) - :data(data), len(len) + :data(data), len(len), dataSent(0) { } char *data; int len; + int dataSent; }; -#endif -class eConsoleAppContainer: public Object +class eConsoleAppContainer: public Object, public iObject { -#ifndef SWIG + DECLARE_REF(eConsoleAppContainer); int fd[3]; + int filefd[3]; int pid; int killstate; + std::string m_cwd; std::queue outbuf; - eSocketNotifier *in, *out, *err; + ePtr in, out, err; void readyRead(int what); void readyErrRead(int what); void readyWrite(int what); void closePipes(); -#endif public: eConsoleAppContainer(); - int execute( const std::string &str ); ~eConsoleAppContainer(); + int setCWD( const char *path ); + int execute( const char *str ); + int execute( const char *cmdline, const char *const argv[] ); int getPID() { return pid; } void kill(); void sendCtrlC(); + void sendEOF(); void write( const char *data, int len ); + void setFileFD(int num, int fd) { if (num >= 0 && num <= 2) filefd[num] = fd; } bool running() { return (fd[0]!=-1) && (fd[1]!=-1) && (fd[2]!=-1); } - PSignal1Str dataAvail; + PSignal1 dataAvail; + PSignal1 stdoutAvail; + PSignal1 stderrAvail; PSignal1 dataSent; PSignal1 appClosed; };