a38c6d4c |
1 | /******************************************************************************* |
2 | * Copyright (c) 2000-2014 Ericsson Telecom AB |
3 | * All rights reserved. This program and the accompanying materials |
4 | * are made available under the terms of the Eclipse Public License v1.0 |
5 | * which accompanies this distribution, and is available at |
6 | * http://www.eclipse.org/legal/epl-v10.html |
7 | * |
8 | * Contributors: |
9 | * Zoltan Janos Szabo (Ericsson) - initial architecture design and implementation |
10 | * Roland Gecse (Ericsson) - initial architecture design |
11 | * Akos Cserveni (Ericsson) - Basic AST in compiler, semantic checking |
12 | * Gabor Szalai (Ericsson) – RAW and TEXT codecs |
13 | * Matyas Forstner (Ericsson) - ASN.1 extension of the compiler and BER/CER/DER codecs |
14 | * Kristof Szabados (Ericsson) - Eclipse Designer, Executor, Titanium UIs |
15 | * Szabolcs Beres (Ericsson) - Eclipse LogViewer |
16 | * Ferenc Kovacs (Ericsson) – log interfaces, big number support, subtype checking |
17 | * Csaba Raduly (Ericsson) – ASN.1 additions, XML encoder/decoder |
18 | * Adam Delic (Ericsson) – template restrictions, try&catch, support of pre-processor directives in Eclipse |
19 | * Krisztian Pandi (Ericsson) – import of imports |
20 | * Peter Dimitrov (Ericsson)- maintenance |
21 | * Balazs Andor Zalanyi (Ericsson) – code splitting |
22 | * Gabor Szalai (Ericsson) – RAW encoding/decoding |
23 | * Jeno Attila Balasko (Ericsson) – tests |
24 | * Csaba Feher (Ericsson) – epoll support |
25 | * Tamas Buti (Ericsson)- maintenance |
26 | * Matyas Ormandi (Ericsson) - maintenance |
27 | * Botond Baranyi (Ericsson) - JSON encoder |
28 | * Arpad Lovassy (Ericsson) - Java Executor API |
29 | * Laszlo Baji (Ericsson) - maintenance |
30 | * Marton Godar (Ericsson) - xsd2ttcn converter |
31 | *******************************************************************************/ |
32 | // |
33 | // File: PIPEasp_PT.hh |
34 | // Description: Header file of PIPE testport implementation |
35 | // Rev: <RnXnn> |
36 | // Prodnr: CNL 113 334 |
37 | // Updated: 2008-06-03 |
38 | // Contact: http://ttcn.ericsson.se |
39 | // |
40 | |
41 | |
42 | #ifndef PIPEasp__PT_HH |
43 | #define PIPEasp__PT_HH |
44 | |
45 | #include "PIPEasp_PortType.hh" |
46 | |
47 | namespace PIPEasp__PortType { |
48 | |
49 | class PIPEasp__PT : public PIPEasp__PT_BASE { |
50 | public: |
51 | PIPEasp__PT(const char *par_port_name = NULL); |
52 | ~PIPEasp__PT(); |
53 | |
54 | void set_parameter(const char *parameter_name, |
55 | const char *parameter_value); |
56 | |
57 | void Event_Handler(const fd_set *read_fds, |
58 | const fd_set *write_fds, const fd_set *error_fds, |
59 | double time_since_last_call); |
60 | |
61 | protected: |
62 | void user_map(const char *system_port); |
63 | void user_unmap(const char *system_port); |
64 | |
65 | void user_start(); |
66 | void user_stop(); |
67 | |
68 | void outgoing_send(const PIPEasp__Types::ASP__PExecute& send_par); |
69 | void outgoing_send(const PIPEasp__Types::ASP__PExecuteBinary& send_par); |
70 | void outgoing_send(const PIPEasp__Types::ASP__PExecuteBackground& send_par); |
71 | void outgoing_send(const PIPEasp__Types::ASP__PStdin& send_par); |
72 | void outgoing_send(const PIPEasp__Types::ASP__PStdinBinary& send_par); |
73 | void outgoing_send(const PIPEasp__Types::ASP__PKill& send_par); |
74 | void outgoing_send(const PIPEasp__Types::ASP__PLineMode& send_par); |
75 | void outgoing_send(const PIPEasp__Types::ASP__PEndOfInput& send_par); |
76 | private: |
77 | int execCommand(const char* command); |
78 | void handle_childDeath(); |
79 | void sendStdout(); |
80 | void sendStderr(); |
81 | void sendExitCode(); |
82 | void sendResult(); |
83 | void sendError(const char* error_msg); |
84 | void log(const char *fmt, ...); |
85 | |
86 | private: |
87 | bool lineMode; // true if lineMode is enabled |
88 | bool processExecuting; // true if process is executing: disable new processes |
89 | bool binaryMode; // true if result should be returned in as binary data |
90 | bool disableSend; // if true sendStdout/err is disabled |
91 | |
92 | fd_set readfds; // fd set for event handler |
93 | int processPid; // pid of the process currently executing |
94 | int processStdin; // fd of stdin of the process |
95 | int processStdout; // fd of stdout of the process |
96 | int processStderr; // fd of stderr of the process |
97 | |
98 | TTCN_Buffer stdout_buffer; // data sent to stdout |
99 | TTCN_Buffer stderr_buffer; // data sent to stderr |
100 | int processExitCode; // exit code of the process |
101 | |
102 | }; |
103 | |
104 | }//namespace |
105 | |
106 | #endif |