Completed the Authtoken Validate Service changes.

This commit is contained in:
Juan Carlos Luciani
2006-09-14 15:54:27 +00:00
parent b25b691642
commit e9680fbfa1
22 changed files with 340 additions and 801 deletions

View File

@@ -625,7 +625,7 @@ CChannel::connectionThread(
// Free SmartCChannel
delete pSmartCChannel;
DbgTrace(1, "CChannel::connectionThread- End\n", 0);
DbgTrace(0, "CChannel::connectionThread- End\n", 0);
// Exit
pthread_exit(NULL);

View File

@@ -38,6 +38,9 @@ extern "C" {
//===[ External data ]=====================================================
extern
unsigned long numCChannelObjects;
//===[ External prototypes ]===============================================
//===[ Manifest constants ]================================================
@@ -116,7 +119,7 @@ IpcClientOpenUnixRemoteEndPoint(
// Note: The service should have been initialized before calling
// this procedure.
//
// L1
// L2
//=======================================================================--
{
int retStatus = -1;
@@ -241,6 +244,8 @@ IpcClientOpenInetRemoteEndPoint(
pthread_mutex_lock(&clientMutex);
try {
// tbd - add code to allow us to share endpoints to the same destination that are already opened
//
// Instantiate a RemoteEndPoint object and keep track of it
// with a smart pointer.
SmartRemoteEndPoint *pSmartRemoteEndPoint = new SmartRemoteEndPoint(new RemoteEndPoint(appMultithreaded,
@@ -583,6 +588,11 @@ IpcClientShutdown(void)
delete[] pAppName;
pAppName = unInitialized;
}
// Wait until all of the channels are gone
while (numCChannelObjects)
sleep(0); // Only suffer a time-slice
sleep(0);
}
else
{
@@ -593,6 +603,26 @@ IpcClientShutdown(void)
}
//++=======================================================================
static void __attribute__((destructor))
so_fini()
//
// Arguments In: None.
//
// Arguments Out: None.
//
// Returns: Nothing.
//
// Abstract: Library un-initialization routine.
//
// L2
//=======================================================================--
{
DbgTrace(0, "so_fini- Start\n", 0);
IpcClientShutdown();
}
//=========================================================================
//=========================================================================

View File

@@ -37,7 +37,7 @@
//===[ Manifest constants ]================================================
#define REMOTE_ENDPOINT_SIGNATURE 0x54525653 // SVRT
#define REMOTE_ENDPOINT_SIGNATURE 0X50454D52 // RMEP
//===[ Type definitions ]==================================================
@@ -75,7 +75,7 @@ RemoteEndPoint::RemoteEndPoint(
//
// Notes:
//
// L1
// L2
//=======================================================================--
{
DbgTrace(1, "RemoteEndPoint::RemoteEndPoint- Start, Obj = %08X\n", this);
@@ -349,6 +349,7 @@ RemoteEndPoint::submitReq(
// Perform the following in a loop to deal with abnormal connection terminations
unsigned long rpcRetryCount = 0;
bool okToRetry = true;
while (rpcRetryCount < m_maxRpcRetries)
{
// Get SmartCChannel
@@ -372,19 +373,30 @@ RemoteEndPoint::submitReq(
{
// Request submission over the channel succeeded, now
// wait for the completion of the request.
clientReq.waitForCompletion(ppServerData,
pServerDataLen);
if (clientReq.waitForCompletion(ppServerData,
pServerDataLen) == 0)
{
// Now proceed based on the completion status
ClientReq::CompletionStatus compStatus = clientReq.completionStatus();
if (compStatus == ClientReq::SuccessCompletionStatus)
{
// Success
retStatus = 0;
}
else
{
// Received a failure from the server, do not retry.
okToRetry = false;
}
}
else
{
// Error waiting for the completion.
okToRetry = false;
}
// Remove the request from the channel
pCChannel->removeReq(reqId);
// Now proceed based on the completion status
ClientReq::CompletionStatus compStatus = clientReq.completionStatus();
if (compStatus == ClientReq::SuccessCompletionStatus)
{
// Success
retStatus = 0;
}
}
else
{
@@ -402,8 +414,9 @@ RemoteEndPoint::submitReq(
DbgTrace(0, "RemoteEndPoint::submitReq- Channel unavailable\n", 0);
}
// Stop trying if the RPC succeeded
if (retStatus == 0)
// Stop trying if the RPC succeeded or if it is not ok to retry
if (retStatus == 0
|| !okToRetry)
break;
// Account for this RPC try

View File

@@ -1089,7 +1089,7 @@ IpcServerSetUnAddress(
//
// Note: The service needs to be initialized before calling this procedure.
//
// L1
// L2
//=======================================================================--
{
int retStatus = -1;