summaryrefslogtreecommitdiff
path: root/apps/JAWS3/jaws3/IO.h
blob: a910a4fb0292b7139b8f2be0d947185064a773c4 (plain)
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/* -*- c++ -*- */
// $Id$

#ifndef JAWS_IO_H
#define JAWS_IO_H

#include "ace/Message_Block.h"
#include "ace/Singleton.h"
#include "ace/Synch_Traits.h"

#include "jaws3/Export.h"


class JAWS_IO;
class JAWS_Event_Completer;


class JAWS_Export JAWS_IO_Impl
// = TITLE
//     IO inteface for the implementation classes on the RHS of the
//     Bridge Pattern.
{
public:

  virtual ~JAWS_IO_Impl (void) {}

  // = Regular IO methods.

  virtual void send ( ACE_HANDLE handle
                    , ACE_Message_Block *mb
                    , JAWS_Event_Completer *completer
                    , void *act = 0
                    ) = 0;

  virtual void recv ( ACE_HANDLE handle
                    , ACE_Message_Block *mb
                    , JAWS_Event_Completer *completer
                    , void *act = 0
                    ) = 0;

  virtual void transmit ( ACE_HANDLE handle
                        , ACE_HANDLE source
                        , JAWS_Event_Completer *completer
                        , void *act = 0
                        , ACE_Message_Block *header = 0
                        , ACE_Message_Block *trailer = 0
                        ) = 0;

  // = Timed IO methods.

  virtual void send ( ACE_HANDLE handle
                    , ACE_Message_Block *mb
                    , JAWS_Event_Completer *completer
                    , const ACE_Time_Value &tv
                    , void *act = 0
                    ) = 0;

  virtual void recv ( ACE_HANDLE handle
                    , ACE_Message_Block *mb
                    , JAWS_Event_Completer *completer
                    , const ACE_Time_Value &tv
                    , void *act = 0
                    ) = 0;

  virtual void transmit ( ACE_HANDLE handle
                        , ACE_HANDLE source
                        , JAWS_Event_Completer *completer
                        , const ACE_Time_Value &tv
                        , void *act = 0
                        , ACE_Message_Block *header = 0
                        , ACE_Message_Block *trailer = 0
                        ) = 0;

};


class JAWS_Export JAWS_IO
{
public:

  JAWS_IO (JAWS_IO_Impl *impl = 0);

  ~JAWS_IO (void);

  static JAWS_IO * instance (void)
  {
    return ACE_Singleton<JAWS_IO, ACE_SYNCH_MUTEX>::instance ();
  }

  void send ( ACE_HANDLE handle
            , ACE_Message_Block *mb
            , JAWS_Event_Completer *completer
            , void *act = 0
            );

  void recv ( ACE_HANDLE handle
            , ACE_Message_Block *mb
            , JAWS_Event_Completer *completer
            , void *act = 0
            );

  void transmit ( ACE_HANDLE handle
                , ACE_HANDLE source
                , JAWS_Event_Completer *completer
                , void *act = 0
                , ACE_Message_Block *header = 0
                , ACE_Message_Block *trailer = 0
                );

  void send ( ACE_HANDLE handle
            , ACE_Message_Block *mb
            , JAWS_Event_Completer *completer
            , const ACE_Time_Value &tv
            , void *act = 0
            );

  void recv ( ACE_HANDLE handle
            , ACE_Message_Block *mb
            , JAWS_Event_Completer *completer
            , const ACE_Time_Value &tv
            , void *act = 0
            );

  void transmit ( ACE_HANDLE handle
                , ACE_HANDLE source
                , JAWS_Event_Completer *completer
                , const ACE_Time_Value &tv
                , void *act = 0
                , ACE_Message_Block *header = 0
                , ACE_Message_Block *trailer = 0
                );


private:

  JAWS_IO_Impl *impl_;

};

#endif /* JAWS_IO_H */