ContextDataClassicIntf.cp [plain text]
/*
* CCIContextDataClassicStubs.cp
*
* $Header: /cvs/kfm/KerberosFramework/CredentialsCache/Sources/ClassicImplementations/ContextDataClassicIntf.cp,v 1.5 2003/03/17 20:47:31 lxs Exp $
*/
#include "ContextDataClassicIntf.h"
#include "ClassicProtocol.h"
#include "ContextDataMachIPCStubs.h"
CCIContextDataClassicInterface::CCIContextDataClassicInterface (
CCIUInt32 inEventID,
const AppleEvent* inEvent,
AppleEvent* outReply):
CCIClassicInterface (inEventID, inEvent, outReply) {
}
CCIContextDataClassicInterface::~CCIContextDataClassicInterface () {
}
void
CCIContextDataClassicInterface::HandleEvent () {
switch (mEventID) {
case ccClassic_Context_CreateCCache:
CreateCCache ();
break;
case ccClassic_Context_CreateDefaultCCache:
CreateDefaultCCache ();
break;
case ccClassic_Context_CreateNewCCache:
CreateNewCCache ();
break;
case ccClassic_Context_SyncWithYellowCache:
SyncWithYellowCache ();
break;
case ccClassic_Context_FabricateInitialDiffs:
FabricateInitialDiffs ();
break;
default:
#warning do error
;
}
}
void CCIContextDataClassicInterface::CreateCCache ()
{
CCIResult result = ccNoError;
try {
ExtractMessage ();
CCIUInt32 serverID;
mReceiveBuffer.Get (serverID);
CheckServerID (serverID);
CCIUInt32 seqNo;
mReceiveBuffer.Get (seqNo);
CCIUniqueID contextID;
mReceiveBuffer.Get (contextID);
std::string name;
mReceiveBuffer.Get (name);
CCIUInt32 version;
mReceiveBuffer.Get (version);
std::string principal;
mReceiveBuffer.Get (principal);
CCIContextDataMachIPCStub context (contextID, ccapi_version_4);
CCIUniqueID ccache = context.CreateCCache (name, version, principal);
mSendBuffer.Put (result);
AddDiffsToReply (mSendBuffer, serverID, seqNo);
mSendBuffer.Put (ccache);
PrepareReply ();
return;
} CatchForClassicReturn_ (result);
mSendBuffer.Reset ();
mSendBuffer.Put (result);
PrepareReply ();
}
void CCIContextDataClassicInterface::CreateDefaultCCache ()
{
CCIResult result = ccNoError;
try {
ExtractMessage ();
CCIUInt32 serverID;
mReceiveBuffer.Get (serverID);
CheckServerID (serverID);
CCIUInt32 seqNo;
mReceiveBuffer.Get (seqNo);
CCIUniqueID contextID;
mReceiveBuffer.Get (contextID);
CCIUInt32 version;
mReceiveBuffer.Get (version);
std::string principal;
mReceiveBuffer.Get (principal);
CCIContextDataMachIPCStub context (contextID, ccapi_version_4);
CCIUniqueID ccache = context.CreateDefaultCCache (version, principal);
mSendBuffer.Put (result);
AddDiffsToReply (mSendBuffer, serverID, seqNo);
mSendBuffer.Put (ccache);
PrepareReply ();
return;
} CatchForClassicReturn_ (result);
mSendBuffer.Reset ();
mSendBuffer.Put (result);
PrepareReply ();
}
void CCIContextDataClassicInterface::CreateNewCCache ()
{
CCIResult result = ccNoError;
try {
ExtractMessage ();
CCIUInt32 serverID;
mReceiveBuffer.Get (serverID);
CheckServerID (serverID);
CCIUInt32 seqNo;
mReceiveBuffer.Get (seqNo);
CCIUniqueID contextID;
mReceiveBuffer.Get (contextID);
CCIUInt32 version;
mReceiveBuffer.Get (version);
std::string principal;
mReceiveBuffer.Get (principal);
CCIContextDataMachIPCStub context (contextID, ccapi_version_4);
CCIUniqueID ccache = context.CreateNewCCache (version, principal);
mSendBuffer.Put (result);
AddDiffsToReply (mSendBuffer, serverID, seqNo);
mSendBuffer.Put (ccache);
PrepareReply ();
return;
} CatchForClassicReturn_ (result);
mSendBuffer.Reset ();
mSendBuffer.Put (result);
PrepareReply ();
}
void
CCIContextDataClassicInterface::SyncWithYellowCache ()
{
CCIResult result = ccNoError;
try {
ExtractMessage ();
CCIUInt32 serverID;
mReceiveBuffer.Get (serverID);
CheckServerID (serverID);
CCIUInt32 seqNo;
mReceiveBuffer.Get (seqNo);
mSendBuffer.Put (result);
AddDiffsToReply (mSendBuffer, serverID, seqNo);
PrepareReply ();
return;
} CatchForClassicReturn_ (result);
mSendBuffer.Reset ();
mSendBuffer.Put (result);
PrepareReply ();
}
void
CCIContextDataClassicInterface::FabricateInitialDiffs ()
{
// This function provides the initial set of diffs which bootstraps
// the classic environment into the same state as the native
// environment
CCIResult result = ccNoError;
try {
ExtractMessage ();
CCIUInt32 serverID;
mReceiveBuffer.Get (serverID);
CheckServerID (serverID);
mSendBuffer.Put (result);
AddInitialDiffsToReply (mSendBuffer, serverID);
PrepareReply ();
return;
} CatchForClassicReturn_ (result);
mSendBuffer.Reset ();
mSendBuffer.Put (result);
PrepareReply ();
}