xref: /AOO41X/main/ucbhelper/inc/ucbhelper/contentbroker.hxx (revision b3b486c3fa1b38c2de306d076387b46c94e4246f)
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 _UCBHELPER_CONTENTBROKER_HXX
25 #define _UCBHELPER_CONTENTBROKER_HXX
26 
27 #include <com/sun/star/uno/Reference.hxx>
28 #include <com/sun/star/uno/Sequence.h>
29 
30 namespace com { namespace sun { namespace star { namespace lang {
31     class XMultiServiceFactory;
32 } } } }
33 
34 namespace com { namespace sun { namespace star { namespace ucb {
35     class XContentIdentifierFactory;
36     class XContentProvider;
37     class XContentProviderManager;
38     class XCommandProcessor;
39 } } } }
40 #include <ucbhelper/registerucb.hxx>
41 #include "ucbhelper/ucbhelperdllapi.h"
42 
43 namespace ucbhelper
44 {
45 
46 class ContentBroker_Impl;
47 
48 //=========================================================================
49 
50 /**
51   * This class simplifies access to the Universal Content Broker (UCB).
52   * Currently there can only be one UCB instance per process. This class can
53   * be used to initialize and deinitialize the Broker and to access its
54   * interfaces directly.
55   */
56 class UCBHELPER_DLLPUBLIC ContentBroker
57 {
58     ContentBroker_Impl*     m_pImpl;
59     // The "one and only" Broker.
60     static ContentBroker*   m_pTheBroker;
61 
62 private:
63     UCBHELPER_DLLPRIVATE ContentBroker( const ContentBroker& );                 // n.i.
64     UCBHELPER_DLLPRIVATE ContentBroker& operator=( const ContentBroker& );  // n.i.
65 
66     /** Constructor.
67       *
68       * @param rxSMgr is a Service Manager.
69       * @param rArguments are the arguments to pass to the
70       *        com.sun.star.ucb.UniversalContentBroker service when creating it.
71       *        Currently, this must be a sequence containing exactly two
72       *        strings, a primary and a secondary configuration key.
73       *        Refer to http://ucb.openoffice.org/docs/ucb-configuration.html
74       *        for more information on UCB configuration.
75       */
76     UCBHELPER_DLLPRIVATE ContentBroker( const ::com::sun::star::uno::Reference<
77                     ::com::sun::star::lang::XMultiServiceFactory >& rSMgr,
78                    const ::com::sun::star::uno::Sequence<
79                     ::com::sun::star::uno::Any >& rArguments );
80 
81     /** Constructor.
82       *
83       * @param rxSMgr is a Service Manager.
84       * @param rData are the data for the for the content providers for
85       *        the new UCB.
86       */
87     UCBHELPER_DLLPRIVATE ContentBroker( const ::com::sun::star::uno::Reference<
88                     ::com::sun::star::lang::XMultiServiceFactory >& rSMgr,
89                    const ContentProviderDataList & rData );
90 
91 protected:
92     /**
93       * Destructor.
94       */
95     ~ContentBroker();
96 
97 public:
98     /** Initialize "the one and only" Broker.  This method must be called
99       * exactly once, before the Broker is used in any way.
100       *
101       * @param rSMgr is a factory to create services needed in the Broker's
102       *        implementation.
103       *
104       * @param rArguments are the arguments to pass to the
105       *        com.sun.star.ucb.UniversalContentBroker service when creating
106       *        it. Currently, this must be a sequence containing exactly two
107       *        strings, a primary and a secondary configuration key.
108       *        Refer to http://ucb.openoffice.org/docs/ucb-configuration.html
109       *        for more information on UCB configuration.
110       *
111       * @return True if creation and possible configuration of the Broker
112       *         was successful.
113       */
114     static sal_Bool
115     initialize( const::com::sun::star::uno::Reference<
116                     ::com::sun::star::lang::XMultiServiceFactory >& rSMgr,
117                 const ::com::sun::star::uno::Sequence<
118                     ::com::sun::star::uno::Any >& rArguments );
119 
120     /** Initialize "the one and only" Broker.  This method must be called
121       * exactly once, before the Broker is used in any way.
122       *
123       * @param rSMgr is a factory to create services needed in the Broker's
124       *        implementation.
125       *
126       * @param rData are the data for the for the content providers for
127       *        the UCB to initialize.
128       *
129       * @return True if creation and possible configuration of the Broker
130       *         was successful.
131       */
132     static sal_Bool
133     initialize( const::com::sun::star::uno::Reference<
134                     ::com::sun::star::lang::XMultiServiceFactory >& rSMgr,
135                 const ContentProviderDataList & rData );
136 
137     /** Deinitialize "the one and only" Broker.  Once this method has been
138       * called, the Broker must not be used any longer.
139       */
140     static void
141     deinitialize();
142 
143     /**
144       * This method returns the Broker, if it was already initialized.
145       *
146       * @return the Broker or 0, if ContentBroker::initialize() was not yet
147       *         called or did fail.
148       */
149     static ContentBroker*
150     get();
151 
152     /**
153       * This method returns the Service Manager used to instanciate the Broker.
154       *
155       * @return a Service Manager.
156       */
157     ::com::sun::star::uno::Reference<
158         ::com::sun::star::lang::XMultiServiceFactory >
159     getServiceManager() const;
160 
161     /**
162       * This method returns the XContentIdentifierFactory interface of the
163       * Broker.
164       *
165       * @return a XContentIdentifierFactory interface.
166       */
167     ::com::sun::star::uno::Reference<
168         ::com::sun::star::ucb::XContentIdentifierFactory >
169     getContentIdentifierFactoryInterface() const;
170 
171     /**
172       * This method returns the XContentProvider interface of the Broker.
173       *
174       * @return a XContentProvider interface.
175       */
176     ::com::sun::star::uno::Reference<
177         ::com::sun::star::ucb::XContentProvider >
178     getContentProviderInterface() const;
179 
180     /**
181       * This method returns the XContentProviderManager interface of the Broker.
182       *
183       * @return a XContentProviderManager interface.
184       */
185     ::com::sun::star::uno::Reference<
186         ::com::sun::star::ucb::XContentProviderManager >
187     getContentProviderManagerInterface() const;
188 
189     /**
190       * This method returns the XCommandProcessor interface of the Broker.
191       *
192       * @return a XCommandProcessor interface.
193       */
194     ::com::sun::star::uno::Reference<
195         ::com::sun::star::ucb::XCommandProcessor >
196     getCommandProcessorInterface() const;
197 };
198 
199 } /* namespace ucbhelper */
200 
201 #endif /* !_UCBHELPER_CONTENTBROKER_HXX */
202