2 * Copyright 1991-1999, Be Incorporated.
3 * Copyright (c) 1999-2000, Eric Moon.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions, and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions, and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
17 * 3. The name of the author may not be used to endorse or promote products
18 * derived from this software without specific prior written permission.
20 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
21 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
22 * OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
24 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
28 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 #include <kernel/OS.h>
39 //#include <storage/Entry.h>
40 //#include <storage/File.h>
43 #include <support/String.h>
46 // logging message data structure
49 bigtime_t tstamp
; // time that LogWriter::Log() was called, in real time
50 bigtime_t now
; // time that LogWriter::Log() was called, according to the time source
51 union // various bits of data for different kinds of logged actions
55 bigtime_t start_time
; // buffer's start time stamp
56 bigtime_t offset
; // how late or early the buffer was handled
64 int32 id
; // parameter ID
65 float value
; // new value
74 // logging message 'what' codes
77 LOG_QUIT
= 'Quit', // time to quit; tear down the thread
79 // messages related to BMediaNode methods
80 LOG_SET_RUN_MODE
= 'Rnmd',
82 LOG_SET_TIME_SOURCE
= 'TSrc',
83 LOG_REQUEST_COMPLETED
= 'Rqcm',
85 // messages related to BControllable methods
86 LOG_GET_PARAM_VALUE
= 'PVal',
87 LOG_SET_PARAM_VALUE
= 'SVal',
89 // messages related to BBufferProducer methods
90 LOG_FORMAT_SUGG_REQ
= 'FSRq',
91 LOG_FORMAT_PROPOSAL
= 'FPro',
92 LOG_FORMAT_CHANGE_REQ
= 'FCRq',
93 LOG_SET_BUFFER_GROUP
= 'SBfG',
94 LOG_VIDEO_CLIP_CHANGED
= 'VClp',
95 LOG_GET_LATENCY
= 'GLat',
96 LOG_PREPARE_TO_CONNECT
= 'PCon',
98 LOG_DISCONNECT
= 'Dsct',
99 LOG_LATE_NOTICE_RECEIVED
= 'LNRc',
100 LOG_ENABLE_OUTPUT
= 'EnOP',
101 LOG_SET_PLAY_RATE
= 'PlRt',
102 LOG_ADDITIONAL_BUFFER
= 'AdBf',
103 LOG_LATENCY_CHANGED
= 'LtCh',
105 // messages related to BBufferConsumer methods
106 LOG_HANDLE_MESSAGE
= 'Mesg',
107 LOG_ACCEPT_FORMAT
= 'Frmt',
108 LOG_BUFFER_RECEIVED
= 'Bufr',
109 LOG_PRODUCER_DATA_STATUS
= 'PDSt',
110 LOG_CONNECTED
= 'Cntd',
111 LOG_DISCONNECTED
= 'Dctd',
112 LOG_FORMAT_CHANGED
= 'Fmtc',
113 LOG_SEEK_TAG
= 'STrq',
115 // messages related to BMediaEventLooper methods
116 LOG_REGISTERED
= 'Rgst',
120 LOG_TIMEWARP
= 'Warp',
122 // messages about handling things in BMediaEventLooper::HandleEvent()
123 LOG_HANDLE_EVENT
= 'HEvt',
124 LOG_HANDLE_UNKNOWN
= 'Uknw', // unknown event code in HandleEvent()
125 LOG_BUFFER_HANDLED
= 'Bfhd',
126 LOG_START_HANDLED
= 'Sthd',
127 LOG_STOP_HANDLED
= 'Sphd',
128 LOG_SEEK_HANDLED
= 'Skhd',
129 LOG_WARP_HANDLED
= 'Wphd',
130 LOG_DATA_STATUS_HANDLED
= 'DShd',
131 LOG_SET_PARAM_HANDLED
= 'SPrm',
132 LOG_INVALID_PARAM_HANDLED
= 'BadP'
139 // Set: output for the log_what members is disabled
140 typedef std::set
<log_what
> FilterSet
;
143 LogWriter(const entry_ref
& logRef
);
146 // write a message to the log
147 void Log(log_what what
, const log_message
& data
);
149 // filtering control for logged messages
150 void SetEnabled(log_what what
, bool enable
);
151 void EnableAllMessages();
152 void DisableAllMessages();
156 thread_id mLogThread
;
162 // called by the LogWriter's thread
163 void HandleMessage(log_what what
, const log_message
& msg
);
165 friend int32
LogWriterLoggingThread(void* arg
);