1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir #ifndef __FRAMEWORK_MACROS_DEBUG_PLUGIN_HXX_
29*cdf0e10cSrcweir #define __FRAMEWORK_MACROS_DEBUG_PLUGIN_HXX_
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir //*****************************************************************************************************************
32*cdf0e10cSrcweir //	special macros to debug asynchronous methods of plugin frame
33*cdf0e10cSrcweir //*****************************************************************************************************************
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir #ifdef	ENABLE_PLUGINDEBUG
36*cdf0e10cSrcweir 
37*cdf0e10cSrcweir 	//_____________________________________________________________________________________________________________
38*cdf0e10cSrcweir 	//	includes
39*cdf0e10cSrcweir 	//_____________________________________________________________________________________________________________
40*cdf0e10cSrcweir 
41*cdf0e10cSrcweir 	#ifndef _RTL_STRBUF_HXX_
42*cdf0e10cSrcweir 	#include <rtl/strbuf.hxx>
43*cdf0e10cSrcweir 	#endif
44*cdf0e10cSrcweir 
45*cdf0e10cSrcweir 	#ifndef _RTL_STRING_HXX_
46*cdf0e10cSrcweir 	#include <rtl/string.hxx>
47*cdf0e10cSrcweir 	#endif
48*cdf0e10cSrcweir 
49*cdf0e10cSrcweir 	/*_____________________________________________________________________________________________________________
50*cdf0e10cSrcweir 		LOGFILE_PLUGIN
51*cdf0e10cSrcweir 
52*cdf0e10cSrcweir 		For follow macros we need a special log file. If user forget to specify anyone, we must do it for him!
53*cdf0e10cSrcweir 	_____________________________________________________________________________________________________________*/
54*cdf0e10cSrcweir 
55*cdf0e10cSrcweir 	#ifndef	LOGFILE_PLUGIN
56*cdf0e10cSrcweir 		#define	LOGFILE_PLUGIN	\
57*cdf0e10cSrcweir 					"plugin.log"
58*cdf0e10cSrcweir 	#endif
59*cdf0e10cSrcweir 
60*cdf0e10cSrcweir 	/*_____________________________________________________________________________________________________________
61*cdf0e10cSrcweir 		LOG_URLSEND( SFRAMENAME, SSENDMODE, SINTERNALURL, SEXTERNALURL )
62*cdf0e10cSrcweir 
63*cdf0e10cSrcweir 		Our plugin forward special url's to plugin dll, browser and webserver.
64*cdf0e10cSrcweir 		We convert internal url's to an external notation.
65*cdf0e10cSrcweir 		With this macro you can log some parameter of this operation.
66*cdf0e10cSrcweir 	_____________________________________________________________________________________________________________*/
67*cdf0e10cSrcweir 
68*cdf0e10cSrcweir 	#define	LOG_URLSEND( SFRAMENAME, SSENDMODE, SINTERNALURL, SEXTERNALURL )								\
69*cdf0e10cSrcweir 				/* Use new scope to declare local private variables! */										\
70*cdf0e10cSrcweir 				{																							\
71*cdf0e10cSrcweir 					::rtl::OStringBuffer sBuffer(1024);														\
72*cdf0e10cSrcweir 					sBuffer.append( "PlugInFrame [ \""	);													\
73*cdf0e10cSrcweir 					sBuffer.append( SFRAMENAME			);													\
74*cdf0e10cSrcweir 					sBuffer.append( "\" ] send "		);													\
75*cdf0e10cSrcweir 					sBuffer.append( SSENDMODE			);													\
76*cdf0e10cSrcweir 					sBuffer.append( "( internalURL=\""	);													\
77*cdf0e10cSrcweir 					sBuffer.append( U2B( SINTERNALURL )	);													\
78*cdf0e10cSrcweir 					sBuffer.append( "\", externalURL=\"");													\
79*cdf0e10cSrcweir 					sBuffer.append( U2B( SEXTERNALURL )	);													\
80*cdf0e10cSrcweir 					sBuffer.append( "\" ) to browser.\n");													\
81*cdf0e10cSrcweir 					WRITE_LOGFILE( LOGFILE_PLUGIN, sBuffer.makeStringAndClear() )							\
82*cdf0e10cSrcweir 				}
83*cdf0e10cSrcweir 
84*cdf0e10cSrcweir 	/*_____________________________________________________________________________________________________________
85*cdf0e10cSrcweir 		LOG_URLRECEIVE( SFRAMENAME, SRECEIVEMODE, SEXTERNALURL, SINTERNALURL )
86*cdf0e10cSrcweir 
87*cdf0e10cSrcweir 		A plugin frame can get a url request in two different modes.
88*cdf0e10cSrcweir 		1) newURL()
89*cdf0e10cSrcweir 		2) newStream()
90*cdf0e10cSrcweir 		We convert external url's to an internal notation.
91*cdf0e10cSrcweir 		With this macro you can log some parameter of this operations.
92*cdf0e10cSrcweir 	_____________________________________________________________________________________________________________*/
93*cdf0e10cSrcweir 
94*cdf0e10cSrcweir 	#define	LOG_URLRECEIVE( SFRAMENAME, SRECEIVEMODE, SEXTERNALURL, SINTERNALURL )							\
95*cdf0e10cSrcweir 				/* Use new scope to declare local private variables! */										\
96*cdf0e10cSrcweir 				{																							\
97*cdf0e10cSrcweir 					::rtl::OStringBuffer sBuffer(1024);														\
98*cdf0e10cSrcweir 					sBuffer.append( "PlugInFrame [ \""		);												\
99*cdf0e10cSrcweir 					sBuffer.append( U2B( SFRAMENAME )		);												\
100*cdf0e10cSrcweir 					sBuffer.append( "\" ] receive "			);												\
101*cdf0e10cSrcweir 					sBuffer.append( SRECEIVEMODE			);												\
102*cdf0e10cSrcweir 					sBuffer.append( "( externalURL=\""		);												\
103*cdf0e10cSrcweir 					sBuffer.append( U2B( SEXTERNALURL )		);												\
104*cdf0e10cSrcweir 					sBuffer.append( "\", internalURL=\""	);												\
105*cdf0e10cSrcweir 					sBuffer.append( U2B( SINTERNALURL )		);												\
106*cdf0e10cSrcweir 					sBuffer.append( "\" ) from browser.\n"	);												\
107*cdf0e10cSrcweir 					WRITE_LOGFILE( LOGFILE_PLUGIN, sBuffer.makeStringAndClear() )							\
108*cdf0e10cSrcweir 				}
109*cdf0e10cSrcweir 
110*cdf0e10cSrcweir 	/*_____________________________________________________________________________________________________________
111*cdf0e10cSrcweir 		LOG_PARAMETER_NEWURL( SFRAMENAME, SMIMETYPE, SURL, AANY )
112*cdf0e10cSrcweir 
113*cdf0e10cSrcweir 		Log information about parameter of a newURL() at a plugin frame.
114*cdf0e10cSrcweir 	_____________________________________________________________________________________________________________*/
115*cdf0e10cSrcweir 
116*cdf0e10cSrcweir 	#define	LOG_PARAMETER_NEWURL( SFRAMENAME, SMIMETYPE, SURL, sFILTER, AANY )								\
117*cdf0e10cSrcweir 				/* Use new scope to declare local private variables! */										\
118*cdf0e10cSrcweir 				{																							\
119*cdf0e10cSrcweir 					::rtl::OStringBuffer sBuffer(1024);														\
120*cdf0e10cSrcweir 					sBuffer.append( "PlugInFrame [ \""				);										\
121*cdf0e10cSrcweir 					sBuffer.append( U2B( SFRAMENAME )				);										\
122*cdf0e10cSrcweir 					sBuffer.append( "\" ] called with newURL( \""	);										\
123*cdf0e10cSrcweir 					sBuffer.append( U2B( SMIMETYPE )				);										\
124*cdf0e10cSrcweir 					sBuffer.append( "\", \""						);										\
125*cdf0e10cSrcweir 					sBuffer.append( U2B( SURL )						);										\
126*cdf0e10cSrcweir 					sBuffer.append( "\", \""						);										\
127*cdf0e10cSrcweir 					sBuffer.append( U2B( SFILTER )					);										\
128*cdf0e10cSrcweir 					sBuffer.append( "\", "							);										\
129*cdf0e10cSrcweir 					if( AANY.hasValue() == sal_True )														\
130*cdf0e10cSrcweir 					{																						\
131*cdf0e10cSrcweir 						sBuffer.append( "filled Any )"	);													\
132*cdf0e10cSrcweir 					}																						\
133*cdf0e10cSrcweir 					else																					\
134*cdf0e10cSrcweir 					{																						\
135*cdf0e10cSrcweir 						sBuffer.append( "empty Any )"	);													\
136*cdf0e10cSrcweir 					}																						\
137*cdf0e10cSrcweir 					sBuffer.append( "\n"	);																\
138*cdf0e10cSrcweir 					WRITE_LOGFILE( LOGFILE_PLUGIN, sBuffer.makeStringAndClear() )							\
139*cdf0e10cSrcweir 				}
140*cdf0e10cSrcweir 
141*cdf0e10cSrcweir 	/*_____________________________________________________________________________________________________________
142*cdf0e10cSrcweir 		LOG_PARAMETER_NEWSTREAM( SFRAMENAME, SMIMETYPE, SURL, ASTREAM, AANY )
143*cdf0e10cSrcweir 
144*cdf0e10cSrcweir 		Log information about parameter of a newStream() at a plugin frame.
145*cdf0e10cSrcweir 	_____________________________________________________________________________________________________________*/
146*cdf0e10cSrcweir 
147*cdf0e10cSrcweir 	#define	LOG_PARAMETER_NEWSTREAM( SFRAMENAME, SMIMETYPE, SURL, SFILTER, XSTREAM, AANY )					\
148*cdf0e10cSrcweir 				/* Use new scope to declare local private variables! */										\
149*cdf0e10cSrcweir 				{																							\
150*cdf0e10cSrcweir 					::rtl::OStringBuffer sBuffer(1024);														\
151*cdf0e10cSrcweir 					sBuffer.append( "PlugInFrame [ \""				);										\
152*cdf0e10cSrcweir 					sBuffer.append( U2B( SFRAMENAME )				);										\
153*cdf0e10cSrcweir 					sBuffer.append( "\" ] called with newStream( \"");										\
154*cdf0e10cSrcweir 					sBuffer.append( U2B( SMIMETYPE )				);										\
155*cdf0e10cSrcweir 					sBuffer.append( "\", \""						);										\
156*cdf0e10cSrcweir 					sBuffer.append( U2B( SURL )						);										\
157*cdf0e10cSrcweir 					sBuffer.append( "\", \""						);										\
158*cdf0e10cSrcweir 					sBuffer.append( U2B( SFILTER )					);										\
159*cdf0e10cSrcweir 					sBuffer.append( "\", "							);										\
160*cdf0e10cSrcweir 					if( XSTREAM.is() == sal_True )															\
161*cdf0e10cSrcweir 					{																						\
162*cdf0e10cSrcweir 						sal_Int32 nBytes = XSTREAM->available();											\
163*cdf0e10cSrcweir 						OString sInfo("Stream with ");														\
164*cdf0e10cSrcweir 						sInfo += OString::valueOf( (sal_Int32)nBytes );										\
165*cdf0e10cSrcweir 						sInfo += " Bytes, ";																\
166*cdf0e10cSrcweir 						sBuffer.append( sInfo );															\
167*cdf0e10cSrcweir 					}																						\
168*cdf0e10cSrcweir 					else																					\
169*cdf0e10cSrcweir 					{																						\
170*cdf0e10cSrcweir 						sBuffer.append( "empty Stream, "	);												\
171*cdf0e10cSrcweir 					}																						\
172*cdf0e10cSrcweir 					if( AANY.hasValue() == sal_True )														\
173*cdf0e10cSrcweir 					{																						\
174*cdf0e10cSrcweir 						sBuffer.append( "filled Any )"	);													\
175*cdf0e10cSrcweir 					}																						\
176*cdf0e10cSrcweir 					else																					\
177*cdf0e10cSrcweir 					{																						\
178*cdf0e10cSrcweir 						sBuffer.append( "empty Any )"	);													\
179*cdf0e10cSrcweir 					}																						\
180*cdf0e10cSrcweir 					sBuffer.append( "\n"	);																\
181*cdf0e10cSrcweir 					WRITE_LOGFILE( LOGFILE_PLUGIN, sBuffer.makeStringAndClear() )							\
182*cdf0e10cSrcweir 				}
183*cdf0e10cSrcweir 
184*cdf0e10cSrcweir #else	// #ifdef ENABLE_PLUGINDEBUG
185*cdf0e10cSrcweir 
186*cdf0e10cSrcweir 	/*_____________________________________________________________________________________________________________
187*cdf0e10cSrcweir 		If right testmode is'nt set - implements these macro empty!
188*cdf0e10cSrcweir 	_____________________________________________________________________________________________________________*/
189*cdf0e10cSrcweir 
190*cdf0e10cSrcweir 	#undef	LOGFILE_PLUGIN
191*cdf0e10cSrcweir 	#define	LOG_URLSEND( SFRAMENAME, SSENDMODE, SINTERNALURL, SEXTERNALURL )
192*cdf0e10cSrcweir 	#define	LOG_URLRECEIVE( SFRAMENAME, SRECEIVEMODE, SEXTERNALURL, SINTERNALURL )
193*cdf0e10cSrcweir 	#define	LOG_PARAMETER_NEWURL( SFRAMENAME, SMIMETYPE, SURL, SFILTER, AANY )
194*cdf0e10cSrcweir 	#define	LOG_PARAMETER_NEWSTREAM( SFRAMENAME, SMIMETYPE, SURL, SFILTER, XSTREAM, AANY )
195*cdf0e10cSrcweir 
196*cdf0e10cSrcweir #endif	// #ifdef ENABLE_PLUGINDEBUG
197*cdf0e10cSrcweir 
198*cdf0e10cSrcweir //*****************************************************************************************************************
199*cdf0e10cSrcweir //	end of file
200*cdf0e10cSrcweir //*****************************************************************************************************************
201*cdf0e10cSrcweir 
202*cdf0e10cSrcweir #endif	// #ifndef __FRAMEWORK_MACROS_DEBUG_PLUGIN_HXX_
203