File: a00177.html

package info (click to toggle)
omnievents 1%3A2.6.2-5
  • links: PTS, VCS
  • area: main
  • in suites: buster, stretch
  • size: 9,004 kB
  • ctags: 14,867
  • sloc: cpp: 7,676; python: 3,138; sh: 2,575; xml: 2,057; java: 1,409; makefile: 317; ansic: 9
file content (249 lines) | stat: -rw-r--r-- 25,338 bytes parent folder | download | duplicates (6)
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>OmniEvents: omniEventsLog.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.3-20050530 -->
<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<div class="nav">
<a class="el" href="dir_000000.html">src</a></div>
<h1>omniEventsLog.h</h1><a href="a00114.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// -*- Mode: C++; -*-</span>
<a name="l00002"></a>00002 <span class="comment">//                            Package   : omniEvents</span>
<a name="l00003"></a>00003 <span class="comment">// omniEventsLog.h            Created   : 1/10/99</span>
<a name="l00004"></a>00004 <span class="comment">//                            Author    : Paul Nader (pwn)</span>
<a name="l00005"></a>00005 <span class="comment">//</span>
<a name="l00006"></a>00006 <span class="comment">//    Copyright (C) 1998 Paul Nader, 2003-2005 Alex Tingle.</span>
<a name="l00007"></a>00007 <span class="comment">//</span>
<a name="l00008"></a>00008 <span class="comment">//    This file is part of the omniEvents application.</span>
<a name="l00009"></a>00009 <span class="comment">//</span>
<a name="l00010"></a>00010 <span class="comment">//    omniEvents is free software; you can redistribute it and/or</span>
<a name="l00011"></a>00011 <span class="comment">//    modify it under the terms of the GNU Lesser General Public</span>
<a name="l00012"></a>00012 <span class="comment">//    License as published by the Free Software Foundation; either</span>
<a name="l00013"></a>00013 <span class="comment">//    version 2.1 of the License, or (at your option) any later version.</span>
<a name="l00014"></a>00014 <span class="comment">//</span>
<a name="l00015"></a>00015 <span class="comment">//    omniEvents is distributed in the hope that it will be useful,</span>
<a name="l00016"></a>00016 <span class="comment">//    but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00017"></a>00017 <span class="comment">//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
<a name="l00018"></a>00018 <span class="comment">//    Lesser General Public License for more details.</span>
<a name="l00019"></a>00019 <span class="comment">//</span>
<a name="l00020"></a>00020 <span class="comment">//    You should have received a copy of the GNU Lesser General Public</span>
<a name="l00021"></a>00021 <span class="comment">//    License along with this library; if not, write to the Free Software</span>
<a name="l00022"></a>00022 <span class="comment">//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</span>
<a name="l00023"></a>00023 <span class="comment">//</span>
<a name="l00024"></a>00024 <span class="comment">// Description:</span>
<a name="l00025"></a>00025 <span class="comment">//</span>
<a name="l00026"></a>00026 
<a name="l00027"></a>00027 <span class="comment">/*</span>
<a name="l00028"></a>00028 <span class="comment">  $Log: omniEventsLog.h,v $</span>
<a name="l00029"></a>00029 <span class="comment">  Revision 1.6.2.4  2005/05/10 14:56:06  alextingle</span>
<a name="l00030"></a>00030 <span class="comment">  All private members are now protected. Allows for flexible subclassing.</span>
<a name="l00031"></a>00031 <span class="comment"></span>
<a name="l00032"></a>00032 <span class="comment">  Revision 1.6.2.3  2005/05/10 14:28:13  alextingle</span>
<a name="l00033"></a>00033 <span class="comment">  Updated copyrights to 2005.</span>
<a name="l00034"></a>00034 <span class="comment"></span>
<a name="l00035"></a>00035 <span class="comment">  Revision 1.6.2.2  2005/04/27 20:49:31  alextingle</span>
<a name="l00036"></a>00036 <span class="comment">  Merge across changes from HEAD branch (see CHANGES_262. Change version number ready for release 2.6.2.</span>
<a name="l00037"></a>00037 <span class="comment"></span>
<a name="l00038"></a>00038 <span class="comment">  Revision 1.6.2.1  2004/11/16 21:46:11  alextingle</span>
<a name="l00039"></a>00039 <span class="comment">  Made several methods virtual to allow users of libomniEvents to override</span>
<a name="l00040"></a>00040 <span class="comment">  the default persistency behaviour. (Dirk O. Siebnich)</span>
<a name="l00041"></a>00041 <span class="comment"></span>
<a name="l00042"></a>00042 <span class="comment">  Revision 1.6  2004/09/11 23:08:39  alextingle</span>
<a name="l00043"></a>00043 <span class="comment">  WriteLock now non-copyable.</span>
<a name="l00044"></a>00044 <span class="comment"></span>
<a name="l00045"></a>00045 <span class="comment">  Revision 1.5  2004/07/26 16:27:08  alextingle</span>
<a name="l00046"></a>00046 <span class="comment">  Support for NT service on windows: main() moved into daemon.cc.</span>
<a name="l00047"></a>00047 <span class="comment">  New (laxer) start up syntax. Port is now set with -p (not -s). There is no</span>
<a name="l00048"></a>00048 <span class="comment">  special cold start mode.</span>
<a name="l00049"></a>00049 <span class="comment">  More flexible naming service name option -N. (No more -K option).</span>
<a name="l00050"></a>00050 <span class="comment"></span>
<a name="l00051"></a>00051 <span class="comment">  Revision 1.4  2004/04/20 17:16:17  alextingle</span>
<a name="l00052"></a>00052 <span class="comment">  Corrected openOfstream() arg name/comments.</span>
<a name="l00053"></a>00053 <span class="comment"></span>
<a name="l00054"></a>00054 <span class="comment">  Revision 1.3  2004/03/28 01:03:58  alextingle</span>
<a name="l00055"></a>00055 <span class="comment">  Refactored class omniEventsLog to allow for more EventChannelFactory parameters.\nNew omniEvents params: -v, -a (alternate endPoint).</span>
<a name="l00056"></a>00056 <span class="comment"></span>
<a name="l00057"></a>00057 <span class="comment">  Revision 1.2  2004/01/11 16:57:26  alextingle</span>
<a name="l00058"></a>00058 <span class="comment">  New persistancy log file format, implemented by PersistNode.h/cc. The new format enables new nodes to be added and old ones erased by appending a single line to the file, rather than by re-persisting the whole application. This is much more efficient when lots of proxies are being created all at once. It's also a much simpler solution, with far fewer lines of code.</span>
<a name="l00059"></a>00059 <span class="comment"></span>
<a name="l00060"></a>00060 <span class="comment">  Revision 1.1  2003/12/21 16:19:49  alextingle</span>
<a name="l00061"></a>00061 <span class="comment">  Moved into 'src' directory as part of the change to POA implementation.</span>
<a name="l00062"></a>00062 <span class="comment"></span>
<a name="l00063"></a>00063 <span class="comment">  Revision 1.4  2003/11/14 13:54:48  alextingle</span>
<a name="l00064"></a>00064 <span class="comment">  New output() members functions. Eliminates the need for friend ostream</span>
<a name="l00065"></a>00065 <span class="comment">  functions that are problematic on earlier versions of Microsoft</span>
<a name="l00066"></a>00066 <span class="comment">  VisualC++.</span>
<a name="l00067"></a>00067 <span class="comment"></span>
<a name="l00068"></a>00068 <span class="comment">  Revision 1.3  2003/11/03 22:35:08  alextingle</span>
<a name="l00069"></a>00069 <span class="comment">  Removed all platform specific switches. Now uses autoconf, config.h.</span>
<a name="l00070"></a>00070 <span class="comment">  Added private helper functions initializeFileNames(), setFilename() &amp;</span>
<a name="l00071"></a>00071 <span class="comment">  openOfstream() to simplify the implementation.</span>
<a name="l00072"></a>00072 <span class="comment">  Removed member `logdir', as it's only used during object construction.</span>
<a name="l00073"></a>00073 <span class="comment">  Renamed configuration macro LOGDIR_ENV_VAR to OMNIEVENTS_LOGDIR_ENV_VAR</span>
<a name="l00074"></a>00074 <span class="comment">  for consistency with other configuration macros.</span>
<a name="l00075"></a>00075 <span class="comment"></span>
<a name="l00076"></a>00076 <span class="comment">  Revision 1.1.1.1.2.1  2002/09/28 22:20:51  shamus13</span>
<a name="l00077"></a>00077 <span class="comment">  Added ifdefs to enable omniEvents to compile</span>
<a name="l00078"></a>00078 <span class="comment">  with both omniORB3 and omniORB4. If __OMNIORB4__</span>
<a name="l00079"></a>00079 <span class="comment">  is defined during compilation, omniORB4 headers</span>
<a name="l00080"></a>00080 <span class="comment">  and command line option syntax is used, otherwise</span>
<a name="l00081"></a>00081 <span class="comment">  fall back to omniORB3 style.</span>
<a name="l00082"></a>00082 <span class="comment"></span>
<a name="l00083"></a>00083 <span class="comment">  Revision 1.1.1.1  2002/09/25 19:00:32  shamus13</span>
<a name="l00084"></a>00084 <span class="comment">  Import of OmniEvents source tree from release 2.1.1</span>
<a name="l00085"></a>00085 <span class="comment"></span>
<a name="l00086"></a>00086 <span class="comment">  Revision 1.3  2000/08/30 04:21:56  naderp</span>
<a name="l00087"></a>00087 <span class="comment">  Port to omniORB 3.0.1.</span>
<a name="l00088"></a>00088 <span class="comment"></span>
<a name="l00089"></a>00089 <span class="comment">  Revision 1.2  2000/03/02 04:19:17  naderp</span>
<a name="l00090"></a>00090 <span class="comment">  Passing factory by reference to init() for initialisation.</span>
<a name="l00091"></a>00091 <span class="comment"></span>
<a name="l00092"></a>00092 <span class="comment">  Revision 1.1  1999/11/02 13:40:56  naderp</span>
<a name="l00093"></a>00093 <span class="comment">  Rearranged data member definitions to avoid compiler warnings during</span>
<a name="l00094"></a>00094 <span class="comment">  initialisation.</span>
<a name="l00095"></a>00095 <span class="comment"></span>
<a name="l00096"></a>00096 <span class="comment">  Revision 1.0  1999/11/01 16:48:21  naderp</span>
<a name="l00097"></a>00097 <span class="comment">  Initial revision</span>
<a name="l00098"></a>00098 <span class="comment"></span>
<a name="l00099"></a>00099 <span class="comment">*/</span>
<a name="l00100"></a>00100 
<a name="l00101"></a>00101 <span class="preprocessor">#ifndef _OMNIEVENTSLOG_H_</span>
<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="preprocessor">#define _OMNIEVENTSLOG_H_</span>
<a name="l00103"></a>00103 <span class="preprocessor"></span>
<a name="l00104"></a>00104 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
<a name="l00105"></a>00105 <span class="preprocessor"></span><span class="preprocessor">#  include "<a class="code" href="a00083.html">config.h</a>"</span>
<a name="l00106"></a>00106 <span class="preprocessor">#endif</span>
<a name="l00107"></a>00107 <span class="preprocessor"></span>
<a name="l00108"></a>00108 <span class="preprocessor">#ifdef HAVE_IOSTREAM</span>
<a name="l00109"></a>00109 <span class="preprocessor"></span><span class="preprocessor">#  include &lt;iostream&gt;</span>
<a name="l00110"></a>00110 <span class="preprocessor">#  include &lt;fstream&gt;</span>
<a name="l00111"></a>00111 <span class="preprocessor">#else</span>
<a name="l00112"></a>00112 <span class="preprocessor"></span><span class="preprocessor">#  include &lt;iostream.h&gt;</span>
<a name="l00113"></a>00113 <span class="preprocessor">#  include &lt;fstream.h&gt;</span>
<a name="l00114"></a>00114 <span class="preprocessor">#endif</span>
<a name="l00115"></a>00115 <span class="preprocessor"></span>
<a name="l00116"></a>00116 <span class="preprocessor">#ifdef HAVE_STD_IOSTREAM</span>
<a name="l00117"></a>00117 <span class="preprocessor"></span><span class="keyword">using</span> <span class="keyword">namespace </span>std;
<a name="l00118"></a>00118 <span class="preprocessor">#endif</span>
<a name="l00119"></a>00119 <span class="preprocessor"></span>
<a name="l00120"></a>00120 <span class="preprocessor">#ifdef HAVE_OMNIORB3</span>
<a name="l00121"></a>00121 <span class="preprocessor"></span><span class="preprocessor">#  include &lt;omniORB3/CORBA.h&gt;</span>
<a name="l00122"></a>00122 <span class="preprocessor">#endif</span>
<a name="l00123"></a>00123 <span class="preprocessor"></span>
<a name="l00124"></a>00124 <span class="preprocessor">#ifdef HAVE_OMNIORB4</span>
<a name="l00125"></a>00125 <span class="preprocessor"></span><span class="preprocessor">#  include &lt;omniORB4/CORBA.h&gt;</span>
<a name="l00126"></a>00126 <span class="preprocessor">#endif</span>
<a name="l00127"></a>00127 <span class="preprocessor"></span>
<a name="l00128"></a>00128 <span class="keyword">namespace </span>OmniEvents {
<a name="l00129"></a>00129 
<a name="l00130"></a>00130 <span class="keyword">class </span>EventChannelFactory_i;
<a name="l00131"></a>00131 <span class="keyword">class </span>PersistNode;
<a name="l00132"></a>00132 
<a name="l00133"></a>00133 <span class="preprocessor">#ifndef OMNIEVENTS_LOGDIR_ENV_VAR</span>
<a name="l00134"></a><a class="code" href="a00114.html#a0">00134</a> <span class="preprocessor"></span><span class="preprocessor">#  define OMNIEVENTS_LOGDIR_ENV_VAR "OMNIEVENTS_LOGDIR"</span>
<a name="l00135"></a>00135 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00136"></a>00136 <span class="preprocessor"></span>
<a name="l00137"></a><a class="code" href="a00056.html">00137</a> <span class="keyword">class </span><a class="code" href="a00056.html">omniEventsLog</a>
<a name="l00138"></a>00138 {
<a name="l00139"></a>00139 <span class="keyword">public</span>:
<a name="l00144"></a><a class="code" href="a00056.html#e0">00144</a>    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="a00056.html#e0">exists</a>() { <span class="keywordflow">return</span> NULL!=<a class="code" href="a00056.html#t0">omniEventsLog::theLog</a>; }
<a name="l00145"></a>00145 
<a name="l00146"></a>00146    <a class="code" href="a00056.html#a0">omniEventsLog</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* logdir=NULL);
<a name="l00147"></a>00147    <span class="keyword">virtual</span> <a class="code" href="a00056.html#a1">~omniEventsLog</a>();
<a name="l00148"></a>00148 
<a name="l00149"></a>00149    <span class="keywordtype">bool</span> <a class="code" href="a00056.html#a2">fileExists</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) <span class="keyword">const</span>;
<a name="l00150"></a><a class="code" href="a00056.html#a3">00150</a>    <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="a00056.html#a3">activeFilename</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="a00056.html#p1">_activeFilename</a>; }
<a name="l00151"></a><a class="code" href="a00056.html#a4">00151</a>    <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="a00056.html#a4">backupFilename</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="a00056.html#p2">_backupFilename</a>; }
<a name="l00152"></a>00152 
<a name="l00157"></a>00157    <a class="code" href="a00060.html">PersistNode</a>* <a class="code" href="a00056.html#a5">bootstrap</a>(<span class="keywordtype">int</span> port, <span class="keyword">const</span> <span class="keywordtype">char</span>* endPointNoListen);
<a name="l00158"></a>00158 
<a name="l00163"></a>00163    <span class="keyword">virtual</span> <a class="code" href="a00060.html">PersistNode</a>* <a class="code" href="a00056.html#a6">parse</a>();
<a name="l00164"></a>00164    
<a name="l00168"></a>00168    <span class="keywordtype">void</span> <a class="code" href="a00056.html#a7">incarnateFactory</a>(<a class="code" href="a00060.html">PersistNode</a>* initialState);
<a name="l00169"></a>00169 
<a name="l00173"></a>00173    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="a00056.html#a8">runWorker</a>();
<a name="l00174"></a>00174    
<a name="l00176"></a><a class="code" href="a00056.html#a9">00176</a>    <a class="code" href="a00047.html">EventChannelFactory_i</a>* <a class="code" href="a00056.html#a9">factory</a>() {<span class="keywordflow">return</span> <a class="code" href="a00056.html#p5">_factory</a>;}
<a name="l00177"></a>00177    
<a name="l00182"></a>00182    <span class="keywordtype">void</span> <a class="code" href="a00056.html#a10">checkpoint</a>(<span class="keywordtype">void</span>);
<a name="l00183"></a>00183 
<a name="l00184"></a>00184    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="a00056.html#a11">output</a>(ostream&amp; os);
<a name="l00185"></a>00185 
<a name="l00186"></a>00186 <span class="keyword">public</span>:
<a name="l00187"></a><a class="code" href="a00057.html">00187</a>   <span class="keyword">class </span><a class="code" href="a00057.html">IOError</a> {};
<a name="l00188"></a>00188 
<a name="l00189"></a>00189 <span class="keyword">protected</span>:
<a name="l00190"></a>00190   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="a00056.html#b0">initializeFileNames</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* logdir);
<a name="l00191"></a>00191   <span class="keywordtype">void</span> <a class="code" href="a00056.html#b1">setFilename</a>(
<a name="l00192"></a>00192     <span class="keywordtype">char</span>*&amp;      filename, 
<a name="l00193"></a>00193     <span class="keyword">const</span> <span class="keywordtype">char</span>* logdir,
<a name="l00194"></a>00194     <span class="keyword">const</span> <span class="keywordtype">char</span>* sep,
<a name="l00195"></a>00195     <span class="keyword">const</span> <span class="keywordtype">char</span>* logname,
<a name="l00196"></a>00196     <span class="keyword">const</span> <span class="keywordtype">char</span>* hostname,
<a name="l00197"></a>00197     <span class="keyword">const</span> <span class="keywordtype">char</span>* ext
<a name="l00198"></a>00198   );
<a name="l00199"></a>00199   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="a00056.html#b2">openOfstream</a>(
<a name="l00200"></a>00200     ofstream&amp;   s,
<a name="l00201"></a>00201     <span class="keyword">const</span> <span class="keywordtype">char</span>* filename,
<a name="l00202"></a>00202     <span class="keywordtype">int</span>         flags=0,
<a name="l00203"></a>00203     <span class="keywordtype">int</span>*        fd=NULL
<a name="l00204"></a>00204   );
<a name="l00205"></a>00205 
<a name="l00206"></a>00206   <span class="keyword">static</span> <a class="code" href="a00056.html">omniEventsLog</a>*  <a class="code" href="a00056.html#t0">theLog</a>;
<a name="l00207"></a>00207 
<a name="l00208"></a><a class="code" href="a00056.html#p0">00208</a>   ofstream               <a class="code" href="a00056.html#p0">_logstream</a>;
<a name="l00209"></a><a class="code" href="a00056.html#p1">00209</a>   <span class="keywordtype">char</span>*                  <a class="code" href="a00056.html#p1">_activeFilename</a>;
<a name="l00210"></a><a class="code" href="a00056.html#p2">00210</a>   <span class="keywordtype">char</span>*                  <a class="code" href="a00056.html#p2">_backupFilename</a>;
<a name="l00211"></a><a class="code" href="a00056.html#p3">00211</a>   <span class="keywordtype">char</span>*                  <a class="code" href="a00056.html#p3">_checkpointFilename</a>;
<a name="l00212"></a><a class="code" href="a00056.html#p4">00212</a>   omni_thread*           <a class="code" href="a00056.html#p4">_workerThread</a>;       
<a name="l00213"></a><a class="code" href="a00056.html#p5">00213</a>   <a class="code" href="a00047.html">EventChannelFactory_i</a>* <a class="code" href="a00056.html#p5">_factory</a>;
<a name="l00214"></a><a class="code" href="a00056.html#p6">00214</a>   <span class="keywordtype">bool</span>                   <a class="code" href="a00056.html#p6">_checkpointNeeded</a>;
<a name="l00215"></a><a class="code" href="a00056.html#p7">00215</a>   omni_mutex             <a class="code" href="a00056.html#p7">_lock</a>;
<a name="l00216"></a>00216   
<a name="l00217"></a><a class="code" href="a00056.html#n0">00217</a>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00080.html">WriteLock</a>;
<a name="l00218"></a>00218 };
<a name="l00219"></a>00219 
<a name="l00220"></a><a class="code" href="a00058.html">00220</a> <span class="keyword">class </span><a class="code" href="a00058.html">omniEventsLogWorker</a> : <span class="keyword">public</span> omni_thread
<a name="l00221"></a>00221 {
<a name="l00222"></a>00222 <span class="keyword">public</span>:
<a name="l00223"></a><a class="code" href="a00058.html#w0">00223</a>     <span class="keyword">typedef</span> void (omniEventsLog::*<a class="code" href="a00058.html#w0">Method</a>)(void);
<a name="l00224"></a>00224     <a class="code" href="a00058.html#d0">omniEventsLogWorker</a>(
<a name="l00225"></a>00225       <a class="code" href="a00056.html">omniEventsLog</a>* object,
<a name="l00226"></a>00226       <a class="code" href="a00058.html#w0">Method</a>         method,
<a name="l00227"></a>00227       priority_t     priority=PRIORITY_NORMAL
<a name="l00228"></a>00228     );
<a name="l00229"></a>00229     <span class="keywordtype">void</span>* <a class="code" href="a00058.html#a1">run_undetached</a>(<span class="keywordtype">void</span> *);
<a name="l00230"></a>00230     <a class="code" href="a00058.html#a2">~omniEventsLogWorker</a>();
<a name="l00231"></a>00231 <span class="keyword">private</span>:
<a name="l00232"></a><a class="code" href="a00058.html#r0">00232</a>     <a class="code" href="a00056.html">omniEventsLog</a>* <a class="code" href="a00058.html#r0">_object</a>;
<a name="l00233"></a><a class="code" href="a00058.html#r1">00233</a>     <a class="code" href="a00058.html#w0">Method</a>         <a class="code" href="a00058.html#r1">_method</a>;
<a name="l00234"></a>00234     <a class="code" href="a00058.html#d0">omniEventsLogWorker</a>(); 
<a name="l00235"></a>00235 };
<a name="l00236"></a>00236 
<a name="l00237"></a>00237 
<a name="l00242"></a><a class="code" href="a00080.html">00242</a> <span class="keyword">class </span><a class="code" href="a00080.html">WriteLock</a>
<a name="l00243"></a>00243 {
<a name="l00244"></a>00244 <span class="keyword">public</span>:
<a name="l00245"></a><a class="code" href="a00080.html#a0">00245</a>   <a class="code" href="a00080.html#a0">WriteLock</a>():
<a name="l00246"></a>00246     <a class="code" href="a00080.html#o0">os</a>(<a class="code" href="a00056.html">omniEventsLog</a>::theLog-&gt;_logstream),
<a name="l00247"></a>00247     <a class="code" href="a00080.html#r0">l</a>(<a class="code" href="a00056.html">omniEventsLog</a>::theLog-&gt;_lock)
<a name="l00248"></a>00248   {}
<a name="l00249"></a><a class="code" href="a00080.html#a1">00249</a>   <a class="code" href="a00080.html#a1">~WriteLock</a>()
<a name="l00250"></a>00250   {
<a name="l00251"></a>00251     <a class="code" href="a00080.html#o0">os</a>.flush();
<a name="l00252"></a>00252     <a class="code" href="a00056.html#t0">omniEventsLog::theLog</a>-&gt;<a class="code" href="a00056.html#p6">_checkpointNeeded</a>=<span class="keyword">true</span>;
<a name="l00253"></a>00253   }
<a name="l00254"></a><a class="code" href="a00080.html#o0">00254</a>   ostream&amp; <a class="code" href="a00080.html#o0">os</a>;
<a name="l00255"></a>00255 <span class="keyword">private</span>:
<a name="l00256"></a><a class="code" href="a00080.html#r0">00256</a>   omni_mutex_lock <a class="code" href="a00080.html#r0">l</a>;
<a name="l00257"></a>00257   <a class="code" href="a00080.html#a0">WriteLock</a>(<span class="keyword">const</span> <a class="code" href="a00080.html">WriteLock</a>&amp;); 
<a name="l00258"></a>00258 };
<a name="l00259"></a>00259 
<a name="l00260"></a>00260 }; <span class="comment">// end namespace OmniEvents</span>
<a name="l00261"></a>00261 
<a name="l00262"></a>00262 <span class="preprocessor">#endif </span><span class="comment">/* _OMNIEVENTSLOG_H_ */</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Aug 26 20:56:14 2005 for OmniEvents by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
</body>
</html>