Created Linux IPC libraries to be used by the AuthToken components.
At this point there is still work to do on them.
This commit is contained in:
@@ -0,0 +1,181 @@
|
||||
/***********************************************************************
|
||||
*
|
||||
* Copyright (C) 2006 Novell, Inc. All Rights Reserved.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; version 2.1
|
||||
* of the License.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, Novell, Inc.
|
||||
*
|
||||
* To contact Novell about this file by physical or electronic mail,
|
||||
* you may find current contact information at www.novell.com.
|
||||
*
|
||||
* Author: Juan Carlos Luciani <jluciani@novell.com>
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
|
||||
//===[ Include files ]=====================================================
|
||||
|
||||
#include "ipcint.h"
|
||||
#include "serverthread.h"
|
||||
#include <assert.h> // Ensure that NDEBUG is defined for release builds!
|
||||
|
||||
//===[ External data ]=====================================================
|
||||
|
||||
//===[ External prototypes ]===============================================
|
||||
|
||||
//===[ Manifest constants ]================================================
|
||||
|
||||
#define SERVER_THREAD_SIGNATURE 0x54525653 // SVRT
|
||||
|
||||
//===[ Type definitions ]==================================================
|
||||
|
||||
//===[ Function prototypes ]===============================================
|
||||
|
||||
//===[ Global variables ]==================================================
|
||||
|
||||
//===[ Type definitions ]==================================================
|
||||
|
||||
//===[ Function prototypes ]===============================================
|
||||
|
||||
//===[ Global variables ]==================================================
|
||||
|
||||
//
|
||||
// Object Counters
|
||||
//
|
||||
unsigned long numServerThreadObjects = 0;
|
||||
|
||||
|
||||
//++=======================================================================
|
||||
ServerThread::ServerThread(void) :
|
||||
|
||||
m_signature (SERVER_THREAD_SIGNATURE)
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// Abstract:
|
||||
//
|
||||
// Notes:
|
||||
//
|
||||
// L2
|
||||
//=======================================================================--
|
||||
{
|
||||
DbgTrace(1, "ServerThread::ServerThread- Start, Obj = %08X\n", this);
|
||||
|
||||
// Initialize the condition
|
||||
if (pthread_cond_init(&m_condition, NULL) != 0)
|
||||
{
|
||||
DbgTrace(0, "ServerThread::ServerThread- Condition initialization failed\n", 0);
|
||||
|
||||
// Throw exception
|
||||
throw bad_alloc();
|
||||
}
|
||||
|
||||
// Increment the object count
|
||||
InterlockedIncrement(&numServerThreadObjects);
|
||||
|
||||
DbgTrace(1, "ServerThread::ServerThread- End\n", 0);
|
||||
|
||||
} /*-- ServerThread::ServerThread() --*/
|
||||
|
||||
|
||||
//++=======================================================================
|
||||
ServerThread::~ServerThread(void)
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// Abstract:
|
||||
//
|
||||
// Notes:
|
||||
//
|
||||
// L2
|
||||
//=======================================================================--
|
||||
{
|
||||
DbgTrace(1, "ServerThread::~ServerThread- Start, Obj = %08X\n", this);
|
||||
|
||||
// Cleanup resources allocated for the object
|
||||
pthread_cond_destroy(&m_condition);
|
||||
|
||||
// Decrement the object count
|
||||
InterlockedDecrement(&numServerThreadObjects);
|
||||
|
||||
DbgTrace(1, "ServerThread::~ServerThread- End\n", 0);
|
||||
|
||||
} /*-- ServerThread::~ServerThread() --*/
|
||||
|
||||
|
||||
//++=======================================================================
|
||||
void
|
||||
ServerThread::awaken(void)
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// Abstract:
|
||||
//
|
||||
// Notes:
|
||||
//
|
||||
// L2
|
||||
//=======================================================================--
|
||||
{
|
||||
DbgTrace(1, "ServerThread::awaken- Start, Obj = %08X\n", this);
|
||||
|
||||
#if DEBUG
|
||||
assert(m_signature == SERVER_THREAD_SIGNATURE);
|
||||
#endif
|
||||
|
||||
// Signal ourselves to wake up
|
||||
pthread_cond_signal(&m_condition);
|
||||
|
||||
DbgTrace(1, "ServerThread::awaken- End\n", 0);
|
||||
|
||||
} /*-- ServerThread::awaken() --*/
|
||||
|
||||
|
||||
//++=======================================================================
|
||||
void
|
||||
ServerThread::suspend(
|
||||
pthread_mutex_t *pMutex)
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// Abstract:
|
||||
//
|
||||
// Notes:
|
||||
//
|
||||
// L2
|
||||
//=======================================================================--
|
||||
{
|
||||
DbgTrace(1, "ServerThread::suspend- Start, Obj = %08X\n", this);
|
||||
|
||||
#if DEBUG
|
||||
assert(m_signature == SERVER_THREAD_SIGNATURE);
|
||||
#endif
|
||||
|
||||
// Wait until signaled to awaken
|
||||
pthread_cond_wait(&m_condition, pMutex);
|
||||
|
||||
DbgTrace(1, "ServerThread::suspend- End\n", 0);
|
||||
|
||||
} /*-- ServerThread::suspend() --*/
|
||||
|
||||
|
||||
//=========================================================================
|
||||
//=========================================================================
|
||||
|
||||
Reference in New Issue
Block a user