File: redir.h

package info (click to toggle)
rsyncrypto 1.14-1.2
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 1,552 kB
  • sloc: cpp: 3,459; sh: 1,221; makefile: 29
file content (65 lines) | stat: -rw-r--r-- 1,533 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef REDIR_H
#define REDIR_H

#include "autopipe.h"

// This is a base class for process output redirection
class redir {
public:
    virtual void child_redirect( int redir_type, void *plat_opaq )=0;
    virtual void parent_redirect( int redir_type, void *plat_opaq )=0;

    virtual ~redir()
    {
    }
};

class redir_pipe : public redir, public autopipe {
public:
    redir_pipe( const autopipe &that ) : autopipe(that)
    {
    }
    explicit redir_pipe( size_t pipe_size=4096) : autopipe(pipe_size)
    {
    }
    virtual ~redir_pipe()
    {
    }
    virtual void child_redirect( int redir_type, void *plat_opaq );
    virtual void parent_redirect( int redir_type, void *plat_opaq );
};

class redir_fd : public redir, public autofd {
public:
    redir_fd(const autofd &that) : autofd(that)
    {
    }
    redir_fd() : autofd()
    {
    }
    explicit redir_fd( file_t fd ) : autofd( fd )
    {
    }
#if defined(EXCEPT_CLASS)
    redir_fd( file_t fd, bool except ) : autofd( fd, except )
    {
    }
    redir_fd( const char *pathname, int flags, mode_t mode ) : autofd( pathname, flags, mode )
    {
    }
#endif
    virtual ~redir_fd()
    {
    }
    virtual void child_redirect( int redir_type, void *plat_opaq );
    virtual void parent_redirect( int redir_type, void *plat_opaq );
};

// Do nothing redirection
class redir_null : public redir {
public:
    virtual void child_redirect( int redir_type, void *plat_opaq );
    virtual void parent_redirect( int redir_type, void *plat_opaq );
};

#endif // REDIR_H