plugins/networking/winsockprt/src/wsp_active.cpp
author Tom Sutcliffe <thomas.sutcliffe@accenture.com>
Fri, 17 Sep 2010 20:24:30 +0100
changeset 75 3c3961c1ae26
parent 0 7f656887cf89
permissions -rw-r--r--
Fixed threadpool hang and added lots of smoketests. * Fixed bug in threadpool logic when calling CleanupAnyWorkersSharingAllocator - this was deleting the worker's thread death notifier in the context of a worker thread (which is only allowed from the context of the main thread). * Added lots more smoketests * Added --overwrite option to fzip (previously unzipping would always overwrite)

// wsp_active.cpp
// 
// Copyright (c) 2002 - 2010 Accenture. All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
// 
// Initial Contributors:
// Accenture - Initial contribution
//


#include "_windows.h"
#include "wsp_active.h"
#include "wsp_scheduler.h"
#include "wsp_panic.h"


CWin32ActiveObject::CWin32ActiveObject(CWin32Scheduler& aScheduler)
	: iScheduler(aScheduler)
	{
	}

CWin32ActiveObject::~CWin32ActiveObject()
	{
	if (iScheduler.IsPresent(*this))
		{
		ReleaseEventHandle();
		}
	}

void CWin32ActiveObject::ConstructL()
	{
	iEvent = CreateEvent(NULL, EFalse, EFalse, NULL);
	if (iEvent == NULL)
		{
		User::Leave(KErrBadHandle);
		}
	iScheduler.Add(*this);
	}

void CWin32ActiveObject::ReleaseEventHandle()
	{
	if (!CloseHandle(iEvent))
		{
		__ASSERT_DEBUG(EFalse, Panic(EWinSockPrtUnexpectedCWin32ActiveObjectCloseHandleError));
		}
	iScheduler.Remove(*this);
	}