1/* 2 * Copyright 2007, Haiku, Inc. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Axel D��rfler, axeld@pinc-software.de 7 */ 8 9 10#include <DirectMessageTarget.h> 11 12 13namespace BPrivate { 14 15 16BDirectMessageTarget::BDirectMessageTarget() 17 : 18 fReferenceCount(1), 19 fClosed(false) 20{ 21} 22 23 24BDirectMessageTarget::~BDirectMessageTarget() 25{ 26} 27 28 29bool 30BDirectMessageTarget::AddMessage(BMessage* message) 31{ 32 if (fClosed) { 33 delete message; 34 return false; 35 } 36 37 fQueue.AddMessage(message); 38 return true; 39} 40 41 42void 43BDirectMessageTarget::Close() 44{ 45 fClosed = true; 46} 47 48 49void 50BDirectMessageTarget::Acquire() 51{ 52 atomic_add(&fReferenceCount, 1); 53} 54 55 56void 57BDirectMessageTarget::Release() 58{ 59 if (atomic_add(&fReferenceCount, -1) == 1) 60 delete this; 61} 62 63} // namespace BPrivate 64