Jamba C++ API  5.0.0
MessageHandler.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018 pongasoft
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  *
16  * @author Yan Pujante
17  */
18 
19 #pragma once
20 
21 #include "Messaging.h"
22 
23 #include <map>
24 
25 namespace pongasoft {
26 namespace VST {
27 
31 {
32 public:
33  virtual ~IMessageHandler() = default;
34  virtual tresult handleMessage(Message const &iMessage) = 0;
35 };
36 
40 {
41 public:
42  // handleMessage
43  tresult handleMessage(Message const &iMessage) override;
44 
45  // registerHandler
46  void registerHandler(MessageID iMessageID, IMessageHandler *iMessageHandler);
47 
48 private:
49  // map of messageID to a handler
50  std::map<MessageID, IMessageHandler *> fHandlers{};
51 };
52 
53 }
54 }
55 
std::map< MessageID, IMessageHandler * > fHandlers
Definition: MessageHandler.h:50
virtual tresult handleMessage(Message const &iMessage)=0
void registerHandler(MessageID iMessageID, IMessageHandler *iMessageHandler)
Definition: MessageHandler.cpp:42
tresult handleMessage(Message const &iMessage) override
Definition: MessageHandler.cpp:29
Simple wrapper class with better api.
Definition: Messaging.h:44
Definition: Clock.h:22
Interface defining a message handler.
Definition: MessageHandler.h:30
virtual ~IMessageHandler()=default
Simple implementation of IMessageHandler which will delegate the message handling based on MessageID.
Definition: MessageHandler.h:39
int MessageID
Definition: Messaging.h:39