RDK Documentation (Open Sourced RDK Components)
rtevents.cpp
1 /*
2  * If not stated otherwise in this file or this component's Licenses.txt file the
3  * following copyright and licenses apply:
4  *
5  * Copyright 2018 RDK Management
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18 */
19 #include "rtevents.h"
20 
21 rtError EventEmitter::send(Event&& event) {
22  auto handleEvent = [](gpointer data) -> gboolean {
23  EventEmitter& self = *static_cast<EventEmitter*>(data);
24 
25  while (!self.m_eventQueue.empty())
26  {
27  rtObjectRef obj = self.m_eventQueue.front();
28  self.m_eventQueue.pop();
29 
30  rtError rc = self.m_emit.send(obj.get<rtString>("name"), obj);
31  ASSERT(RT_OK == rc);
32  }
33 
34  self.m_timeoutId = 0;
35  return G_SOURCE_REMOVE;
36  };
37 
38  m_eventQueue.push(event.object());
39 
40  if (m_timeoutId == 0) {
41  m_timeoutId = g_timeout_add(0, handleEvent, (void*) this);
42  }
43 
44  return RT_OK;
45 }
Event
class to DRM Event handle
Definition: opencdmsessionadapter.h:24
EventEmitter
Definition: rtevents.h:51