Update: EventQue deleminate null Event.

Signed-off-by: tomoaki <tomoaki@tomy-tech.com>
This commit is contained in:
tomoaki
2016-10-19 17:20:22 +09:00
parent 143b2ef90b
commit e2cf453c6b
4 changed files with 22 additions and 24 deletions

View File

@@ -152,7 +152,7 @@ void ClientRecvTask::log(Client* client, MQTTSNPacket* packet, MQTTSNString* id)
if ( id )
{
memset((void*)cstr, 0, id->lenstring.len);
memset((void*)cstr, 0, id->lenstring.len + 1);
strncpy(cstr, id->lenstring.data, id->lenstring.len) ;
clientId = cstr;
}

View File

@@ -207,7 +207,7 @@ public:
int post(T* t)
{
if ( t && ( _maxSize == 0 || size() < _maxSize ))
if ( t && ( _maxSize == 0 || _cnt < _maxSize ))
{
QueElement<T>* elm = new QueElement<T>(t);
if ( _head )

View File

@@ -315,18 +315,12 @@ void EventQue::setMaxSize(uint16_t maxSize)
Event* EventQue::wait(void)
{
Event* ev;
while ( true )
{
_sem.wait();
_mutex.lock();
ev = _que.front();
_que.pop();
_mutex.unlock();
if ( ev )
{
return ev;
}
}
_sem.wait();
_mutex.lock();
ev = _que.front();
_que.pop();
_mutex.unlock();
return ev;
}
Event* EventQue::timedwait(uint16_t millsec)
@@ -356,16 +350,19 @@ Event* EventQue::timedwait(uint16_t millsec)
void EventQue::post(Event* ev)
{
_mutex.lock();
if ( _que.post(ev) )
if ( ev )
{
_sem.post();
_mutex.lock();
if ( _que.post(ev) )
{
_sem.post();
}
else
{
delete ev;
}
_mutex.unlock();
}
else
{
delete ev;
}
_mutex.unlock();
}
int EventQue::size()