Added retries for RPCs that fail due to connection errors.

This commit is contained in:
Juan Carlos Luciani 2008-06-30 20:41:06 +00:00
parent 6219bb156e
commit e3a00efe33
5 changed files with 2762 additions and 2511 deletions

View File

@ -0,0 +1,215 @@
/***********************************************************************
*
* Copyright (C) 2005-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.
*
***********************************************************************/
#ifndef _CASA_STATUS_H_
#define _CASA_STATUS_H_
#if defined(__cplusplus) || defined(c_plusplus)
extern "C"
{
#endif
//===[ Header files specific to this module ]==============================
#include <micasa_types.h>
//===[ External data ]==============================
//===[ External prototypes ]==============================
//===[ Type definitions ]==============================
//
// CasaStatus type
//
//
// The layed out of status values is as follows:
//
// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
// +---+-+-+-+---------------------+-------------------------------+
// |Sev|r|r|r| Facility | Code |
// +---+-+-+-+---------------------+-------------------------------+
//
// where
//
// Sev - is the severity code
//
// 00 - Success
// 01 - Informational
// 10 - Warning
// 11 - Error
//
// r - is a reserved bit for internal use
//
// Facility - is the facility code
//
// Code - is the facility's status code
//
typedef uint32_t CasaStatus;
//===[ Manifest constants ]==============================
//
// Define severity codes to be used with CasaStatusBuild macro
//
#define CASA_SEVERITY_SUCCESS 0x0
#define CASA_SEVERITY_INFORMATIONAL 0x1
#define CASA_SEVERITY_WARNING 0x2
#define CASA_SEVERITY_ERROR 0x3
//
// Define the facility codes
//
// Facility codes will start at 0x800 and then work backwards
// in an effort to avoid conflict with other system components.
//
#define CASA_FACILITY_AUTHTOKEN 0x7FF
#define CASA_FACILITY_KRB5TOKEN 0x7FE
#define CASA_FACILITY_PWTOKEN 0x7FD
//
// Codes above FACILITY_SPECIFIC are component specific status codes.
// Facility specific status codes are defined in the facilities' header file.
//
#define FACILITY_SPECIFIC 0x00001000
//
// Codes below FACILITY_SPECIFIC are common status codes shared by all components.
//
#define CASA_STATUS_SUCCESS ((CasaStatus)0x00000000) // Call completed successfully
#define CASA_STATUS_UNSUCCESSFUL ((CasaStatus)0x00000001) // Call completed unsuccessfully
#define CASA_STATUS_INVALID_HANDLE ((CasaStatus)0x00000002) // An invalid handle was specified
#define CASA_STATUS_INVALID_PARAMETER ((CasaStatus)0x00000003) // An invalid parameter to function was specified
#define CASA_STATUS_INSUFFICIENT_RESOURCES ((CasaStatus)0x00000004)
#define CASA_STATUS_ACCESS_DENIED ((CasaStatus)0x00000005) // Caller does not have required access rights for operation
#define CASA_STATUS_BUFFER_OVERFLOW ((CasaStatus)0x00000006) // The data was too large to fit into the specified buffer
#define CASA_STATUS_NO_DATA ((CasaStatus)0x00000007)
#define CASA_STATUS_NO_MORE_ENTRIES ((CasaStatus)0x00000008) // No more entries to enumerate
#define CASA_STATUS_TIMEOUT ((CasaStatus)0x00000009) // Timed out waiting on resource
#define CASA_STATUS_OBJECT_NOT_FOUND ((CasaStatus)0x0000000A)
#define CASA_STATUS_CANCELLED ((CasaStatus)0x0000000B) // Request cancelled
#define CASA_STATUS_NOT_IMPLEMENTED ((CasaStatus)0x0000000C)
#define CASA_STATUS_PENDING ((CasaStatus)0x0000000D) // The request is being processed
#define CASA_STATUS_INVALID_STATE ((CasaStatus)0x0000000E)
#define CASA_STATUS_INVALID_REQUEST ((CasaStatus)0x0000000F)
#define CASA_STATUS_ALREADY_REGISTERED ((CasaStatus)0x00000010)
#define CASA_STATUS_ABORTED ((CasaStatus)0x00000011)
#define CASA_STATUS_REQUEST_NOT_FOUND ((CasaStatus)0x00000012) // Unable to cancel request because it was not found
#define CASA_STATUS_OBJECT_ALREADY_EXISTS ((CasaStatus)0x00000013) // The object being created already exists.
#define CASA_STATUS_UNSUPPORTED_PROTOCOL ((CasaStatus)0x00000014) // The object is only accessable through a unsupported protocol.
#define CASA_STATUS_REJECTED ((CasaStatus)0x00000015)
#define CASA_STATUS_ACCESS_VIOLATION ((CasaStatus)0x00000016)
#define CASA_STATUS_NOT_SUPPORTED ((CasaStatus)0x00000017)
#define CASA_STATUS_NO_PROVIDERS ((CasaStatus)0x00000018) // No providers are available.
#define CASA_STATUS_CONFLICT ((CasaStatus)0x00000019)
#define CASA_STATUS_INSUFFICIENT_STORAGE ((CasaStatus)0x0000001A)
#define CASA_STATUS_AUTHENTICATION_FAILURE ((CasaStatus)0x0000001B)
#define CASA_STATUS_CONFIGURATION_ERROR ((CasaStatus)0x0000001C)
#define CASA_STATUS_LIBRARY_LOAD_FAILURE ((CasaStatus)0x0000001D)
#define CASA_STATUS_AUTH_SERVER_UNAVAILABLE ((CasaStatus)0x0000001E)
#define CASA_STATUS_PROTOCOL_ERROR ((CasaStatus)0x0000001F)
#define CASA_STATUS_SERVER_ERROR ((CasaStatus)0x00000020)
#define CASA_STATUS_NO_CREDENTIALS ((CasaStatus)0x00000021)
#define CASA_STATUS_NOT_CONFIGURED ((CasaStatus)0x00000022)
#define CASA_STATUS_INVALID_SERVER_CERTIFICATE ((CasaStatus)0x00000023)
#define CASA_STATUS_NAME_RESOLVE_ERROR ((CasaStatus)0x00000024)
#define CASA_STATUS_CONNECTION_ERROR ((CasaStatus)0x00000025)
//===[ Macro definitions ]==============================
//
// Macro for building status error codes
//
#define CasaStatusBuild(severity, facility, errorcode) \
((CasaStatus)(((severity) << 30) | ((facility) << 16) | (errorcode)))
//
// Macro for retrieving the facility
//
#define CasaStatusFacility(status) \
((CasaStatus)(((CasaStatus)(status) >> 16) & (CasaStatus)0x07FF))
//
// Macro for retrieving severity
//
#define CasaStatusSeverity(status) \
((CasaStatus)(((CasaStatus)(status)) >> 30))
//
// Macro for retrieving status code
//
#define CasaStatusCode(status) \
((CasaStatus)((CasaStatus)(status) & (CasaStatus)0x0000FFFF))
//
// Macro for checking status code for success
//
#define CASA_SUCCESS(status) \
((CasaStatus)(status) >> 30 != CASA_SEVERITY_ERROR)
//
// Macro for checking status code for information
//
#define CASA_INFORMATION(status) \
((CasaStatus)(status) >> 30 == CASA_SEVERITY_INFORMATIONAL)
//
// Macro for checking status code for warning
//
#define CASA_WARNING(status) \
((CasaStatus)(status) >> 30 == CASA_SEVERITY_WARNING)
//
// Macro for checking status code for error
//
#define CASA_ERROR(status) \
((CasaStatus)(status) >> 30 == CASA_SEVERITY_ERROR)
//===[ Function Prototypes ]==============================
//===[ Global Variables ]==============================
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif // #if defined(__cplusplus) || defined(c_plusplus)
#endif // _CASA_STATUS_H_
//=========================================================================
//=========================================================================
// casa_status.h

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -139,6 +139,7 @@ typedef uint32_t CasaStatus;
#define CASA_STATUS_NOT_CONFIGURED ((CasaStatus)0x00000022)
#define CASA_STATUS_INVALID_SERVER_CERTIFICATE ((CasaStatus)0x00000023)
#define CASA_STATUS_NAME_RESOLVE_ERROR ((CasaStatus)0x00000024)
#define CASA_STATUS_CONNECTION_ERROR ((CasaStatus)0x00000025)
//===[ Macro definitions ]==============================