diff options
author | Steve Kondik <steve@cyngn.com> | 2016-05-17 13:50:43 -0700 |
---|---|---|
committer | davidevinavil <davidevinavil@gmail.com> | 2017-01-21 18:20:40 +0100 |
commit | 9b2f586aa30c3802a7663a25cf98eb8f06309d2f (patch) | |
tree | df43e5bb7aeb9957b31ebdfbdce45baec7744f20 /data-ipa-cfg-mgr/ipacm/src/IPACM_CmdQueue.cpp | |
parent | 11e7b3c6aa71b15800f7cf989ac71bbd85a68e51 (diff) |
z2_plus: Update IPA connection manager to 1.0 branch
Change-Id: I20555a4bd9981f652f71360bdb7d83e822fad883
Diffstat (limited to 'data-ipa-cfg-mgr/ipacm/src/IPACM_CmdQueue.cpp')
-rw-r--r-- | data-ipa-cfg-mgr/ipacm/src/IPACM_CmdQueue.cpp | 66 |
1 files changed, 53 insertions, 13 deletions
diff --git a/data-ipa-cfg-mgr/ipacm/src/IPACM_CmdQueue.cpp b/data-ipa-cfg-mgr/ipacm/src/IPACM_CmdQueue.cpp index 7e48546..a17fb08 100644 --- a/data-ipa-cfg-mgr/ipacm/src/IPACM_CmdQueue.cpp +++ b/data-ipa-cfg-mgr/ipacm/src/IPACM_CmdQueue.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2013, The Linux Foundation. All rights reserved. +Copyright (c) 2013-2016, The Linux Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -40,24 +40,42 @@ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include <string.h> #include "IPACM_CmdQueue.h" #include "IPACM_Log.h" +#include "IPACM_Iface.h" pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond_var = PTHREAD_COND_INITIALIZER; -MessageQueue* MessageQueue::inst = NULL; -MessageQueue* MessageQueue::getInstance() +MessageQueue* MessageQueue::inst_internal = NULL; +MessageQueue* MessageQueue::inst_external = NULL; + +MessageQueue* MessageQueue::getInstanceInternal() { - if(inst == NULL) + if(inst_internal == NULL) { - inst = new MessageQueue(); - if(inst == NULL) + inst_internal = new MessageQueue(); + if(inst_internal == NULL) { - IPACMERR("unable to create Message Queue instance\n"); + IPACMERR("unable to create internal Message Queue instance\n"); return NULL; } } - return inst; + return inst_internal; +} + +MessageQueue* MessageQueue::getInstanceExternal() +{ + if(inst_external == NULL) + { + inst_external = new MessageQueue(); + if(inst_external == NULL) + { + IPACMERR("unable to create external Message Queue instance\n"); + return NULL; + } + } + + return inst_external; } void MessageQueue::enqueue(Message *item) @@ -101,14 +119,22 @@ Message* MessageQueue::dequeue(void) void* MessageQueue::Process(void *param) { - MessageQueue *MsgQueue = NULL; + MessageQueue *MsgQueueInternal = NULL; + MessageQueue *MsgQueueExternal = NULL; Message *item = NULL; IPACMDBG("MessageQueue::Process()\n"); - MsgQueue = MessageQueue::getInstance(); - if(MsgQueue == NULL) + MsgQueueInternal = MessageQueue::getInstanceInternal(); + if(MsgQueueInternal == NULL) + { + IPACMERR("unable to start internal cmd queue process\n"); + return NULL; + } + + MsgQueueExternal = MessageQueue::getInstanceExternal(); + if(MsgQueueExternal == NULL) { - IPACMERR("unable to start cmd queue process\n"); + IPACMERR("unable to start external cmd queue process\n"); return NULL; } @@ -120,7 +146,21 @@ void* MessageQueue::Process(void *param) return NULL; } - item = MsgQueue->dequeue(); + item = MsgQueueInternal->dequeue(); + if(item == NULL) + { + item = MsgQueueExternal->dequeue(); + if(item) + { + IPACMDBG("Get event %s from external queue.\n", + IPACM_Iface::ipacmcfg->getEventName(item->evt.data.event)); + } + } + else + { + IPACMDBG("Get event %s from internal queue.\n", + IPACM_Iface::ipacmcfg->getEventName(item->evt.data.event)); + } if(item == NULL) { |