Back to index

lightning-sunbird  0.9+nobinonly
nsServiceManagerObsolete.cpp
Go to the documentation of this file.
00001 /* ***** BEGIN LICENSE BLOCK *****
00002  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00003  *
00004  * The contents of this file are subject to the Mozilla Public License Version
00005  * 1.1 (the "License"); you may not use this file except in compliance with
00006  * the License. You may obtain a copy of the License at
00007  * http://www.mozilla.org/MPL/
00008  *
00009  * Software distributed under the License is distributed on an "AS IS" basis,
00010  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00011  * for the specific language governing rights and limitations under the
00012  * License.
00013  *
00014  * The Original Code is XPCOM.
00015  *
00016  * The Initial Developer of the Original Code is
00017  * Netscape Communications Corporation.
00018  * Portions created by the Initial Developer are Copyright (C) 1998
00019  * the Initial Developer. All Rights Reserved.
00020  *
00021  * Contributor(s):
00022  *
00023  * Alternatively, the contents of this file may be used under the terms of
00024  * either of the GNU General Public License Version 2 or later (the "GPL"),
00025  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00026  * in which case the provisions of the GPL or the LGPL are applicable instead
00027  * of those above. If you wish to allow use of your version of this file only
00028  * under the terms of either the GPL or the LGPL, and not to allow others to
00029  * use your version of this file under the terms of the MPL, indicate your
00030  * decision by deleting the provisions above and replace them with the notice
00031  * and other provisions required by the GPL or the LGPL. If you do not delete
00032  * the provisions above, a recipient may use your version of this file under
00033  * the terms of any one of the MPL, the GPL or the LGPL.
00034  *
00035  * ***** END LICENSE BLOCK ***** */
00036 
00037 
00038 #include "nsIServiceManager.h"
00039 #include "nsIServiceManagerObsolete.h"
00040 #include "nsComponentManager.h"
00041 
00042 extern PRBool gXPCOMShuttingDown;
00043 
00044 // Global service manager interface (see nsIServiceManagerObsolete.h)
00045 
00046 nsresult
00047 nsServiceManager::GetGlobalServiceManager(nsIServiceManager* *result)
00048 {
00049     if (gXPCOMShuttingDown)
00050         return NS_ERROR_UNEXPECTED;
00051     
00052     if (nsComponentManagerImpl::gComponentManager == nsnull)
00053         return NS_ERROR_UNEXPECTED;
00054         
00055     // this method does not addref for historical reasons.
00056     // we return the nsIServiceManagerObsolete interface via a cast.
00057     *result =  (nsIServiceManager*) NS_STATIC_CAST(nsIServiceManagerObsolete*, 
00058                                                    nsComponentManagerImpl::gComponentManager);
00059     return NS_OK;
00060 }
00061 
00062 nsresult
00063 nsServiceManager::ShutdownGlobalServiceManager(nsIServiceManager* *result)
00064 {
00065     NS_NOTREACHED("nsServiceManager::ShutdownGlobalServiceManager is deprecated");
00066     return NS_OK;
00067 }
00068 
00069 nsresult
00070 nsServiceManager::GetService(const nsCID& aClass, const nsIID& aIID,
00071                              nsISupports* *result,
00072                              nsIShutdownListener* shutdownListener)
00073 {
00074     NS_NOTREACHED("nsServiceManager::GetService is deprecated");
00075 
00076     if (nsComponentManagerImpl::gComponentManager == nsnull)
00077         return NS_ERROR_UNEXPECTED;
00078     
00079     return nsComponentManagerImpl::gComponentManager->GetService(aClass, aIID, (void**)result);
00080 }
00081 
00082 nsresult
00083 nsServiceManager::ReleaseService(const nsCID& aClass, nsISupports* service,
00084                                  nsIShutdownListener* shutdownListener)
00085 {
00086     NS_NOTREACHED("nsServiceManager::ReleaseService is deprecated");
00087 
00088     NS_IF_RELEASE(service);
00089     return NS_OK;
00090 }
00091 
00092 nsresult
00093 nsServiceManager::RegisterService(const nsCID& aClass, nsISupports* aService)
00094 {
00095     NS_NOTREACHED("nsServiceManager::RegisterService is deprecated");
00096     
00097     if (nsComponentManagerImpl::gComponentManager == nsnull)
00098         return NS_ERROR_UNEXPECTED;
00099     
00100     return nsComponentManagerImpl::gComponentManager->RegisterService(aClass, aService);
00101 }
00102 
00103 nsresult
00104 nsServiceManager::UnregisterService(const nsCID& aClass)
00105 {
00106     NS_NOTREACHED("nsServiceManager::UnregisterService is deprecated");
00107 
00108     if (nsComponentManagerImpl::gComponentManager == nsnull)
00109         return NS_ERROR_UNEXPECTED;
00110     
00111     return nsComponentManagerImpl::gComponentManager->UnregisterService(aClass);
00112 }
00113 
00115 // let's do it again, this time with ContractIDs...
00116 
00117 nsresult
00118 nsServiceManager::GetService(const char* aContractID, const nsIID& aIID,
00119                              nsISupports* *result,
00120                              nsIShutdownListener* shutdownListener)
00121 {
00122     NS_NOTREACHED("nsServiceManager::GetService is deprecated");
00123     
00124     if (nsComponentManagerImpl::gComponentManager == nsnull)
00125         return NS_ERROR_UNEXPECTED;
00126 
00127     return nsComponentManagerImpl::gComponentManager->GetServiceByContractID(aContractID, aIID, (void**)result);
00128 }
00129 
00130 nsresult
00131 nsServiceManager::ReleaseService(const char* aContractID, nsISupports* service,
00132                                  nsIShutdownListener* shutdownListener)
00133 {
00134     NS_NOTREACHED("nsServiceManager::ReleaseService is deprecated");
00135 
00136     NS_RELEASE(service);
00137     return NS_OK;
00138 }
00139 
00140 nsresult
00141 nsServiceManager::RegisterService(const char* aContractID, nsISupports* aService)
00142 {
00143     NS_NOTREACHED("nsServiceManager::RegisterService is deprecated");
00144     
00145     if (nsComponentManagerImpl::gComponentManager == nsnull)
00146         return NS_ERROR_UNEXPECTED;
00147     
00148     return nsComponentManagerImpl::gComponentManager->RegisterService(aContractID, aService);
00149 }
00150 
00151 nsresult
00152 nsServiceManager::UnregisterService(const char* aContractID)
00153 {
00154     NS_NOTREACHED("nsServiceManager::UnregisterService is deprecated");
00155 
00156     // Don't create the global service manager here because we might
00157     // be shutting down, and releasing all the services in its
00158     // destructor
00159     if (gXPCOMShuttingDown)
00160         return NS_OK;
00161     
00162     if (nsComponentManagerImpl::gComponentManager == nsnull)
00163         return NS_ERROR_UNEXPECTED;
00164 
00165     return nsComponentManagerImpl::gComponentManager->UnregisterService(aContractID);
00166 }
00167