1 /*****************************************************************
3 | Neptune - Messaging System
5 | Copyright (c) 2002-2008, Axiomatic Systems, LLC.
8 | Redistribution and use in source and binary forms, with or without
9 | modification, are permitted provided that the following conditions are met:
10 | * Redistributions of source code must retain the above copyright
11 | notice, this list of conditions and the following disclaimer.
12 | * Redistributions in binary form must reproduce the above copyright
13 | notice, this list of conditions and the following disclaimer in the
14 | documentation and/or other materials provided with the distribution.
15 | * Neither the name of Axiomatic Systems nor the
16 | names of its contributors may be used to endorse or promote products
17 | derived from this software without specific prior written permission.
19 | THIS SOFTWARE IS PROVIDED BY AXIOMATIC SYSTEMS ''AS IS'' AND ANY
20 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 | DISCLAIMED. IN NO EVENT SHALL AXIOMATIC SYSTEMS BE LIABLE FOR ANY
23 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 ****************************************************************/
32 /*----------------------------------------------------------------------
34 +---------------------------------------------------------------------*/
35 #include "NptMessaging.h"
36 #include "NptDynamicCast.h"
38 /*----------------------------------------------------------------------
40 +---------------------------------------------------------------------*/
41 NPT_DEFINE_DYNAMIC_CAST_ANCHOR(NPT_MessageHandler
)
42 const NPT_Message::Type
NPT_Message::MessageType
= "Generic Message";
44 /*----------------------------------------------------------------------
45 | NPT_MessageHandler::HandleMessage
46 +---------------------------------------------------------------------*/
48 NPT_MessageHandler::HandleMessage(NPT_Message
* message
)
50 return message
->Dispatch(this);
53 /*----------------------------------------------------------------------
54 | NPT_MessageHandlerProxy::NPT_MessageHandlerProxy
55 +---------------------------------------------------------------------*/
56 NPT_DEFINE_DYNAMIC_CAST_ANCHOR(NPT_MessageHandlerProxy
)
57 NPT_MessageHandlerProxy::NPT_MessageHandlerProxy(NPT_MessageHandler
* handler
) :
62 /*----------------------------------------------------------------------
63 | NPT_MessageHandlerProxy::NPT_MessageHandlerProxy
64 +---------------------------------------------------------------------*/
65 NPT_MessageHandlerProxy::~NPT_MessageHandlerProxy()
69 /*----------------------------------------------------------------------
70 | NPT_MessageHandlerProxy::OnMessage
71 +---------------------------------------------------------------------*/
73 NPT_MessageHandlerProxy::OnMessage(NPT_Message
* message
)
76 if (m_Handler
) m_Handler
->OnMessage(message
);
80 /*----------------------------------------------------------------------
81 | NPT_MessageHandlerProxy::HandleMessage
82 +---------------------------------------------------------------------*/
84 NPT_MessageHandlerProxy::HandleMessage(NPT_Message
* message
)
86 NPT_Result result
= NPT_SUCCESS
;
88 if (m_Handler
) result
= m_Handler
->HandleMessage(message
);
94 /*----------------------------------------------------------------------
95 | NPT_MessageHandlerProxy::DetachHandler
96 +---------------------------------------------------------------------*/
98 NPT_MessageHandlerProxy::DetachHandler()
105 /*----------------------------------------------------------------------
106 | NPT_MessageHandlerProxy::AddReference
107 +---------------------------------------------------------------------*/
109 NPT_MessageHandlerProxy::AddReference()
116 /*----------------------------------------------------------------------
117 | NPT_MessageHandlerProxy::Release
118 +---------------------------------------------------------------------*/
120 NPT_MessageHandlerProxy::Release()
123 bool must_delete
= (--m_ReferenceCount
== 0);
126 if (must_delete
) delete this;