1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef __FRAMEWORK_MACROS_DEBUG_PLUGIN_HXX_
25 #define __FRAMEWORK_MACROS_DEBUG_PLUGIN_HXX_
26 
27 //*****************************************************************************************************************
28 //	special macros to debug asynchronous methods of plugin frame
29 //*****************************************************************************************************************
30 
31 #ifdef	ENABLE_PLUGINDEBUG
32 
33 	//_____________________________________________________________________________________________________________
34 	//	includes
35 	//_____________________________________________________________________________________________________________
36 
37 	#ifndef _RTL_STRBUF_HXX_
38 	#include <rtl/strbuf.hxx>
39 	#endif
40 
41 	#ifndef _RTL_STRING_HXX_
42 	#include <rtl/string.hxx>
43 	#endif
44 
45 	/*_____________________________________________________________________________________________________________
46 		LOGFILE_PLUGIN
47 
48 		For follow macros we need a special log file. If user forget to specify anyone, we must do it for him!
49 	_____________________________________________________________________________________________________________*/
50 
51 	#ifndef	LOGFILE_PLUGIN
52 		#define	LOGFILE_PLUGIN	\
53 					"plugin.log"
54 	#endif
55 
56 	/*_____________________________________________________________________________________________________________
57 		LOG_URLSEND( SFRAMENAME, SSENDMODE, SINTERNALURL, SEXTERNALURL )
58 
59 		Our plugin forward special url's to plugin dll, browser and webserver.
60 		We convert internal url's to an external notation.
61 		With this macro you can log some parameter of this operation.
62 	_____________________________________________________________________________________________________________*/
63 
64 	#define	LOG_URLSEND( SFRAMENAME, SSENDMODE, SINTERNALURL, SEXTERNALURL )								\
65 				/* Use new scope to declare local private variables! */										\
66 				{																							\
67 					::rtl::OStringBuffer sBuffer(1024);														\
68 					sBuffer.append( "PlugInFrame [ \""	);													\
69 					sBuffer.append( SFRAMENAME			);													\
70 					sBuffer.append( "\" ] send "		);													\
71 					sBuffer.append( SSENDMODE			);													\
72 					sBuffer.append( "( internalURL=\""	);													\
73 					sBuffer.append( U2B( SINTERNALURL )	);													\
74 					sBuffer.append( "\", externalURL=\"");													\
75 					sBuffer.append( U2B( SEXTERNALURL )	);													\
76 					sBuffer.append( "\" ) to browser.\n");													\
77 					WRITE_LOGFILE( LOGFILE_PLUGIN, sBuffer.makeStringAndClear() )							\
78 				}
79 
80 	/*_____________________________________________________________________________________________________________
81 		LOG_URLRECEIVE( SFRAMENAME, SRECEIVEMODE, SEXTERNALURL, SINTERNALURL )
82 
83 		A plugin frame can get a url request in two different modes.
84 		1) newURL()
85 		2) newStream()
86 		We convert external url's to an internal notation.
87 		With this macro you can log some parameter of this operations.
88 	_____________________________________________________________________________________________________________*/
89 
90 	#define	LOG_URLRECEIVE( SFRAMENAME, SRECEIVEMODE, SEXTERNALURL, SINTERNALURL )							\
91 				/* Use new scope to declare local private variables! */										\
92 				{																							\
93 					::rtl::OStringBuffer sBuffer(1024);														\
94 					sBuffer.append( "PlugInFrame [ \""		);												\
95 					sBuffer.append( U2B( SFRAMENAME )		);												\
96 					sBuffer.append( "\" ] receive "			);												\
97 					sBuffer.append( SRECEIVEMODE			);												\
98 					sBuffer.append( "( externalURL=\""		);												\
99 					sBuffer.append( U2B( SEXTERNALURL )		);												\
100 					sBuffer.append( "\", internalURL=\""	);												\
101 					sBuffer.append( U2B( SINTERNALURL )		);												\
102 					sBuffer.append( "\" ) from browser.\n"	);												\
103 					WRITE_LOGFILE( LOGFILE_PLUGIN, sBuffer.makeStringAndClear() )							\
104 				}
105 
106 	/*_____________________________________________________________________________________________________________
107 		LOG_PARAMETER_NEWURL( SFRAMENAME, SMIMETYPE, SURL, AANY )
108 
109 		Log information about parameter of a newURL() at a plugin frame.
110 	_____________________________________________________________________________________________________________*/
111 
112 	#define	LOG_PARAMETER_NEWURL( SFRAMENAME, SMIMETYPE, SURL, sFILTER, AANY )								\
113 				/* Use new scope to declare local private variables! */										\
114 				{																							\
115 					::rtl::OStringBuffer sBuffer(1024);														\
116 					sBuffer.append( "PlugInFrame [ \""				);										\
117 					sBuffer.append( U2B( SFRAMENAME )				);										\
118 					sBuffer.append( "\" ] called with newURL( \""	);										\
119 					sBuffer.append( U2B( SMIMETYPE )				);										\
120 					sBuffer.append( "\", \""						);										\
121 					sBuffer.append( U2B( SURL )						);										\
122 					sBuffer.append( "\", \""						);										\
123 					sBuffer.append( U2B( SFILTER )					);										\
124 					sBuffer.append( "\", "							);										\
125 					if( AANY.hasValue() == sal_True )														\
126 					{																						\
127 						sBuffer.append( "filled Any )"	);													\
128 					}																						\
129 					else																					\
130 					{																						\
131 						sBuffer.append( "empty Any )"	);													\
132 					}																						\
133 					sBuffer.append( "\n"	);																\
134 					WRITE_LOGFILE( LOGFILE_PLUGIN, sBuffer.makeStringAndClear() )							\
135 				}
136 
137 	/*_____________________________________________________________________________________________________________
138 		LOG_PARAMETER_NEWSTREAM( SFRAMENAME, SMIMETYPE, SURL, ASTREAM, AANY )
139 
140 		Log information about parameter of a newStream() at a plugin frame.
141 	_____________________________________________________________________________________________________________*/
142 
143 	#define	LOG_PARAMETER_NEWSTREAM( SFRAMENAME, SMIMETYPE, SURL, SFILTER, XSTREAM, AANY )					\
144 				/* Use new scope to declare local private variables! */										\
145 				{																							\
146 					::rtl::OStringBuffer sBuffer(1024);														\
147 					sBuffer.append( "PlugInFrame [ \""				);										\
148 					sBuffer.append( U2B( SFRAMENAME )				);										\
149 					sBuffer.append( "\" ] called with newStream( \"");										\
150 					sBuffer.append( U2B( SMIMETYPE )				);										\
151 					sBuffer.append( "\", \""						);										\
152 					sBuffer.append( U2B( SURL )						);										\
153 					sBuffer.append( "\", \""						);										\
154 					sBuffer.append( U2B( SFILTER )					);										\
155 					sBuffer.append( "\", "							);										\
156 					if( XSTREAM.is() == sal_True )															\
157 					{																						\
158 						sal_Int32 nBytes = XSTREAM->available();											\
159 						OString sInfo("Stream with ");														\
160 						sInfo += OString::valueOf( (sal_Int32)nBytes );										\
161 						sInfo += " Bytes, ";																\
162 						sBuffer.append( sInfo );															\
163 					}																						\
164 					else																					\
165 					{																						\
166 						sBuffer.append( "empty Stream, "	);												\
167 					}																						\
168 					if( AANY.hasValue() == sal_True )														\
169 					{																						\
170 						sBuffer.append( "filled Any )"	);													\
171 					}																						\
172 					else																					\
173 					{																						\
174 						sBuffer.append( "empty Any )"	);													\
175 					}																						\
176 					sBuffer.append( "\n"	);																\
177 					WRITE_LOGFILE( LOGFILE_PLUGIN, sBuffer.makeStringAndClear() )							\
178 				}
179 
180 #else	// #ifdef ENABLE_PLUGINDEBUG
181 
182 	/*_____________________________________________________________________________________________________________
183 		If right testmode is'nt set - implements these macro empty!
184 	_____________________________________________________________________________________________________________*/
185 
186 	#undef	LOGFILE_PLUGIN
187 	#define	LOG_URLSEND( SFRAMENAME, SSENDMODE, SINTERNALURL, SEXTERNALURL )
188 	#define	LOG_URLRECEIVE( SFRAMENAME, SRECEIVEMODE, SEXTERNALURL, SINTERNALURL )
189 	#define	LOG_PARAMETER_NEWURL( SFRAMENAME, SMIMETYPE, SURL, SFILTER, AANY )
190 	#define	LOG_PARAMETER_NEWSTREAM( SFRAMENAME, SMIMETYPE, SURL, SFILTER, XSTREAM, AANY )
191 
192 #endif	// #ifdef ENABLE_PLUGINDEBUG
193 
194 //*****************************************************************************************************************
195 //	end of file
196 //*****************************************************************************************************************
197 
198 #endif	// #ifndef __FRAMEWORK_MACROS_DEBUG_PLUGIN_HXX_
199