File: drv_pty.h

package info (click to toggle)
t38modem 0.8.4-2
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 448 kB
  • ctags: 659
  • sloc: cpp: 6,606; makefile: 85
file content (118 lines) | stat: -rw-r--r-- 2,659 bytes parent folder | download
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*
 * drv_pty.h
 *
 * T38FAX Pseudo Modem
 *
 * Copyright (c) 2001-2007 Vyacheslav Frolov
 *
 * Open H323 Project
 *
 * The contents of this file are subject to the Mozilla Public License
 * Version 1.0 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
 * the License for the specific language governing rights and limitations
 * under the License.
 *
 * The Original Code is Open H323 Library.
 *
 * The Initial Developer of the Original Code is Vyacheslav Frolov
 *
 * Contributor(s): Equivalence Pty ltd
 *
 * $Log: drv_pty.h,v $
 * Revision 1.3  2007/01/29 12:44:41  vfrolov
 * Added ability to put args to drivers
 *
 * Revision 1.2  2004/07/19 08:31:06  vfrolov
 * Fixed "friend declaration requires class-key"
 *
 * Revision 1.1  2004/07/07 12:38:32  vfrolov
 * The code for pseudo-tty (pty) devices that communicates with fax application formed to PTY driver.
 *
 *
 * Log: pty.h,v
 *
 * Revision 1.3  2002/04/19 14:29:37  vfrolov
 * Added Copyright header
 *
 * Revision 1.2  2002/01/10 06:10:03  craigs
 * Added MPL header
 *
 * Revision 1.1  2002/01/01 23:06:54  craigs
 * Initial version
 *
 */

#ifndef _DRV_PTY_H
#define _DRV_PTY_H

#ifndef _WIN32
  #define MODEM_DRIVER_Pty
#endif

#ifdef MODEM_DRIVER_Pty

#include "pmodemi.h"

///////////////////////////////////////////////////////////////
class InPty;
class OutPty;

class PseudoModemPty : public PseudoModemBody
{
    PCLASSINFO(PseudoModemPty, PseudoModemBody);

  public:
  /**@name Construction */
  //@{
    PseudoModemPty(
      const PString &_tty,
      const PString &_route,
      const PConfigArgs &args,
      const PNotifier &_callbackEndPoint
    );
    ~PseudoModemPty();
  //@}

  /**@name static functions */
  //@{
    static BOOL CheckTty(const PString &_tty);
    static PString ArgSpec();
    static PStringArray Description();
  //@}

  protected:
  /**@name Overrides from class PseudoModemBody */
  //@{
    const PString &ttyPath() const;
    ModemThreadChild *GetPtyNotifier();
    BOOL StartAll();
    void StopAll();
    void MainLoop();
  //@}

  private:
    BOOL OpenPty();
    void ClosePty();
    BOOL IsOpenPty() const { return hPty >= 0; }

    int hPty;
    InPty *inPty;
    OutPty *outPty;

    PString ptypath;
    PString ttypath;

    friend class InPty;
    friend class OutPty;
};
///////////////////////////////////////////////////////////////

#endif // MODEM_DRIVER_Pty

#endif // _DRV_PTY_H