1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 /* 19 * $Id$ 20 */ 21 22 23 24 // --------------------------------------------------------------------------- 25 // Includes 26 // --------------------------------------------------------------------------- 27 #include <xercesc/util/XercesDefs.hpp> 28 #include <xercesc/util/PlatformUtils.hpp> 29 #include <xercesc/util/Mutexes.hpp> 30 31 XERCES_CPP_NAMESPACE_BEGIN 32 33 // --------------------------------------------------------------------------- 34 // XMLMutex: Constructors and Destructor 35 // --------------------------------------------------------------------------- XMLMutex(MemoryManager * const manager)36XMLMutex::XMLMutex(MemoryManager* const manager) : 37 38 fHandle(0), 39 fManager(manager) 40 { 41 // Ask the per-platform driver to make us a mutex 42 fHandle = XMLPlatformUtils::makeMutex(manager); 43 } 44 45 ~XMLMutex()46XMLMutex::~XMLMutex() 47 { 48 if (fHandle) 49 { 50 XMLPlatformUtils::closeMutex(fHandle, fManager); 51 fHandle = 0; 52 } 53 } 54 55 56 // --------------------------------------------------------------------------- 57 // XMLMutex: Lock control methods 58 // --------------------------------------------------------------------------- lock()59void XMLMutex::lock() 60 { 61 XMLPlatformUtils::lockMutex(fHandle); 62 } 63 unlock()64void XMLMutex::unlock() 65 { 66 XMLPlatformUtils::unlockMutex(fHandle); 67 } 68 69 70 71 // --------------------------------------------------------------------------- 72 // XMLMutexLock: Constructors and Destructor 73 // --------------------------------------------------------------------------- XMLMutexLock(XMLMutex * const toLock)74XMLMutexLock::XMLMutexLock(XMLMutex* const toLock) : 75 76 fToLock(toLock) 77 { 78 fToLock->lock(); 79 } 80 81 ~XMLMutexLock()82XMLMutexLock::~XMLMutexLock() 83 { 84 fToLock->unlock(); 85 } 86 87 XERCES_CPP_NAMESPACE_END 88