-- Copyright (C) 1987 by Xerox Corporation. All rights reserved.
-- Stub file was translated on March 26, 1987 5:07:18 pm PST by Lupine of January 22, 1987 5:37:32 pm PST
-- Source interface OldAlpineDebug came from file OldAlpineDebug.bcd, which was created on March 26, 1987 5:07:02 pm PST with version stamp 61#252#26055555412 from source of January 7, 1987 10:02:53 am PST.
-- The RPC stub modules for OldAlpineDebug are:
-- OldAlpineDebugRpcControl.mesa;
-- OldAlpineDebugRpcClientImpl.mesa;
-- OldAlpineDebugRpcBinderImpl.mesa;
-- OldAlpineDebugRpcServerImpl.mesa.
-- The parameters for this translation are:
-- Target language = Cedar
-- Default parameter passing = VALUE
-- Deallocate server heap arguments = TRUE
-- Inline RpcServerImpl dispatcher stubs = TRUE
-- Declare signals = TRUE
-- Warn about short POINTER ("MDS") allocations = TRUE
-- Maximum number of dynamic heap NEWs = 50, MDS NEWs = 50
-- Acceptable parameter protocols = VersionRange[1..1].
DIRECTORY
OldAlpineEnvironment,
OldAlpineDebug,
OldAlpineDebugRpcControl USING [InterMdsCallsOnly, LupineProtocolVersion,
ProcedureIndex, SignalIndex],
RPC USING [EncryptionKey, InterfaceName, Principal, standardZones,
Zones],
RPCLupine --USING SOME OF [Call, DataLength, Dispatcher, ExportHandle,
-- ExportInterface, GetStubPkt, maxDataLength, maxPrincipalLength,
-- maxShortStringLength, pktOverhead, ReceiveExtraPkt, SendPrelimPkt,
-- StartCall, StartSignal, StubPkt, UnexportInterface]--,
LupineRuntime --USING SOME OF [BindingError, CheckPktLength, CopyFromPkt,
-- CopyFromMultiplePkts, CopyToPkt, CopyToMultiplePkts, defaultZones,
-- DispatchingError, FinishThisPkt, ListHeader, MarshalingError,
-- MarshalingExprError, MarshalAtom, MarshalRope, NilHeader, ProtocolError,
-- RopeHeader, RpcPktDoubleWord, RuntimeError, SequenceHeader, SHORT,
-- StartNextPkt, StringHeader, StubPktDoubleWord, TranslationError,
-- UnmarshalingError, UnmarshalingExprError, UnmarshalAtom, UnmarshalRope,
-- WordsForChars]--,
Atom --USING SOME OF [GetPName, MakeAtom]--,
Rope --USING SOME OF [InlineFlatten, Length, NewText, Text]--;
OldAlpineDebugRpcServerImpl: MONITOR
IMPORTS OldAlpineDebug, RpcPrivate: RPCLupine, Lupine: LupineRuntime,
Atom, Rope
EXPORTS OldAlpineDebugRpcControl
SHARES OldAlpineDebug, OldAlpineDebugRpcControl, Rope
= BEGIN OPEN OldAlpineDebug, RpcControl: OldAlpineDebugRpcControl,
RpcPublic: RPC;
-- Standard remote binding routines.
bound: BOOLEAN ← FALSE;
myInterface: RpcPrivate.ExportHandle;
paramZones: RpcPublic.Zones ← RpcPublic.standardZones;
ExportInterface: PUBLIC ENTRY SAFE PROCEDURE [
interfaceName: RpcPublic.InterfaceName,
user: RpcPublic.Principal,
password: RpcPublic.EncryptionKey,
parameterStorage: RpcPublic.Zones ] =
TRUSTED BEGIN ENABLE UNWIND => NULL;
IsNull: PROCEDURE [string: Rope.ROPE] RETURNS [BOOLEAN] =
INLINE {RETURN[string.Length[] = 0]};
IF bound THEN Lupine.BindingError;
myInterface ← RpcPrivate.ExportInterface [
interface: [
type: IF ~IsNull[interfaceName.type]
THEN interfaceName.type ELSE "OldAlpineDebug~61#252#26055555412",
instance: interfaceName.instance,
version: interfaceName.version ],
user: user, password: password,
dispatcher: ServerDispatcher,
localOnly: RpcControl.InterMdsCallsOnly,
stubProtocol: RpcControl.LupineProtocolVersion ];
paramZones ← [
gc: IF parameterStorage.gc # NIL
THEN parameterStorage.gc ELSE Lupine.defaultZones.gc,
heap: IF parameterStorage.heap # NIL
THEN parameterStorage.heap ELSE Lupine.defaultZones.heap,
mds: IF parameterStorage.mds # NIL
THEN parameterStorage.mds ELSE Lupine.defaultZones.mds ];
bound ← TRUE;
END;
UnexportInterface: PUBLIC ENTRY SAFE PROCEDURE =
TRUSTED BEGIN ENABLE UNWIND => NULL;
IF ~bound THEN Lupine.BindingError;
myInterface ← RpcPrivate.UnexportInterface[myInterface];
paramZones ← RpcPublic.standardZones;
bound ← FALSE;
END;
-- Public procedure dispatcher and public signal and error catcher.
ServerDispatcher: --PROCEDURE [pkt: RPCPkt, callLength: DataLength,
-- lastPkt: BOOLEAN, localConversation: Conversation] RETURNS [returnLength:
-- DataLength]-- RpcPrivate.Dispatcher =
BEGIN
-- Catch public signals.
ENABLE BEGIN
AccessFailed --ERROR [missingAccess: OldAlpineEnvironment.NeededAccess]--
=>
BEGIN
ArgumentOverlay: TYPE = MACHINE DEPENDENT RECORD [
transferIndex (0): RpcControl.SignalIndex ← AccessFailed, missingAccess
(1): OldAlpineEnvironment.NeededAccess];
argPkt: LONG POINTER TO ArgumentOverlay = @pkt.data[0];
pktLength: RpcPrivate.DataLength ← 2;
lastPkt: BOOLEAN;
RpcPrivate.StartSignal[signalPkt: pkt];
argPkt↑ ← [missingAccess: missingAccess];
[returnLength: , lastPkt: lastPkt] ←
RpcPrivate.Call[ pkt: pkt, callLength: pktLength,
maxReturnLength: 0];
Lupine.RuntimeError; -- Impossible to RESUME an ERROR.
END; -- AccessFailed.
LockFailed --ERROR [why: OldAlpineEnvironment.LockFailure]--
=>
BEGIN
ArgumentOverlay: TYPE = MACHINE DEPENDENT RECORD [
transferIndex (0): RpcControl.SignalIndex ← LockFailed, why
(1): OldAlpineEnvironment.LockFailure];
argPkt: LONG POINTER TO ArgumentOverlay = @pkt.data[0];
pktLength: RpcPrivate.DataLength ← 2;
lastPkt: BOOLEAN;
RpcPrivate.StartSignal[signalPkt: pkt];
argPkt↑ ← [why: why];
[returnLength: , lastPkt: lastPkt] ←
RpcPrivate.Call[ pkt: pkt, callLength: pktLength,
maxReturnLength: 0];
Lupine.RuntimeError; -- Impossible to RESUME an ERROR.
END; -- LockFailed.
OperationFailed --ERROR [why: OldAlpineEnvironment.OperationFailure]--
=>
BEGIN
ArgumentOverlay: TYPE = MACHINE DEPENDENT RECORD [
transferIndex (0): RpcControl.SignalIndex ← OperationFailed,
why (1): OldAlpineEnvironment.OperationFailure];
argPkt: LONG POINTER TO ArgumentOverlay = @pkt.data[0];
pktLength: RpcPrivate.DataLength ← 2;
lastPkt: BOOLEAN;
RpcPrivate.StartSignal[signalPkt: pkt];
argPkt↑ ← [why: why];
[returnLength: , lastPkt: lastPkt] ←
RpcPrivate.Call[ pkt: pkt, callLength: pktLength,
maxReturnLength: 0];
Lupine.RuntimeError; -- Impossible to RESUME an ERROR.
END; -- OperationFailed.
StaticallyInvalid --ERROR-- =>
BEGIN
ArgumentOverlay: TYPE = MACHINE DEPENDENT RECORD [
transferIndex (0): RpcControl.SignalIndex ← StaticallyInvalid];
argPkt: LONG POINTER TO ArgumentOverlay = @pkt.data[0];
pktLength: RpcPrivate.DataLength ← 1;
lastPkt: BOOLEAN;
RpcPrivate.StartSignal[signalPkt: pkt];
argPkt.transferIndex ← StaticallyInvalid;
[returnLength: , lastPkt: lastPkt] ←
RpcPrivate.Call[ pkt: pkt, callLength: pktLength,
maxReturnLength: 0];
Lupine.RuntimeError; -- Impossible to RESUME an ERROR.
END; -- StaticallyInvalid.
Unknown --ERROR [what: OldAlpineEnvironment.UnknownType]-- =>
BEGIN
ArgumentOverlay: TYPE = MACHINE DEPENDENT RECORD [
transferIndex (0): RpcControl.SignalIndex ← Unknown, what (1):
OldAlpineEnvironment.UnknownType];
argPkt: LONG POINTER TO ArgumentOverlay = @pkt.data[0];
pktLength: RpcPrivate.DataLength ← 2;
lastPkt: BOOLEAN;
RpcPrivate.StartSignal[signalPkt: pkt];
argPkt↑ ← [what: what];
[returnLength: , lastPkt: lastPkt] ←
RpcPrivate.Call[ pkt: pkt, callLength: pktLength,
maxReturnLength: 0];
Lupine.RuntimeError; -- Impossible to RESUME an ERROR.
END; -- Unknown.
END; -- Catch public signals.
-- Call public procedures (still in dispatcher).
SELECT LOOPHOLE[pkt.data[0], RpcControl.ProcedureIndex] FROM
ReadOwnerFileHeader => RETURN[
ReadOwnerFileHeaderStub[pkt: pkt, callLength: callLength, lastPkt:
lastPkt, localConversation: localConversation]];
ReadNextOwnerRecord => RETURN[
ReadNextOwnerRecordStub[pkt: pkt, callLength: callLength, lastPkt:
lastPkt, localConversation: localConversation]];
ChangeSpaceForOwner => RETURN[
ChangeSpaceForOwnerStub[pkt: pkt, callLength: callLength, lastPkt:
lastPkt, localConversation: localConversation]];
ReadDBUniversalFile => RETURN[
ReadDBUniversalFileStub[pkt: pkt, callLength: callLength, lastPkt:
lastPkt, localConversation: localConversation]];
ReportAccessCacheStats => RETURN[
ReportAccessCacheStatsStub[pkt: pkt, callLength: callLength,
lastPkt: lastPkt, localConversation: localConversation]];
ReportAccessVolatileStats => RETURN[
ReportAccessVolatileStatsStub[pkt: pkt, callLength: callLength,
lastPkt: lastPkt, localConversation: localConversation]];
CrashSystem => RETURN[
CrashSystemStub[pkt: pkt, callLength: callLength, lastPkt:
lastPkt, localConversation: localConversation]];
ENDCASE => RETURN[Lupine.DispatchingError[]];
END; -- ServerDispatcher
-- Public procedure dispatcher stubs.
ReadOwnerFileHeaderStub: --PROCEDURE [conversation: OldAlpineEnvironment.Conversation,
-- transID: OldAlpineEnvironment.TransID, volumeGroupID: OldAlpineEnvironment.VolumeGroupID]
-- RETURNS [version: NAT, recordedVolGroupID: OldAlpineEnvironment.VolumeGroupID,
-- totalQuota: OldAlpineEnvironment.PageCount, quotaLeft: OldAlpineEnvironment.PageCount,
-- numberOfOwners: NAT, numberOfOwnerSlotsInUse: NAT, maxNumberOfOwnersAllowed:
-- NAT]-- RpcPrivate.Dispatcher =
INLINE BEGIN
ArgumentOverlay: TYPE = MACHINE DEPENDENT RECORD [
transferIndex (0): RpcControl.ProcedureIndex, transID (1): OldAlpineEnvironment.TransID,
volumeGroupID (10): OldAlpineEnvironment.VolumeGroupID];
ResultOverlay: TYPE = MACHINE DEPENDENT RECORD [
version (0): NAT, recordedVolGroupID (1): OldAlpineEnvironment.VolumeGroupID,
totalQuota (6): OldAlpineEnvironment.PageCount, quotaLeft (8):
OldAlpineEnvironment.PageCount, numberOfOwners (10): NAT, numberOfOwnerSlotsInUse
(11): NAT, maxNumberOfOwnersAllowed (12): NAT];
argPkt: LONG POINTER TO ArgumentOverlay = @pkt.data[0];
resPkt: LONG POINTER TO ResultOverlay = @pkt.data[0];
pktLength: RpcPrivate.DataLength ← 15;
Lupine.CheckPktLength[pkt: pkt, pktLength: pktLength];
[resPkt.version, resPkt.recordedVolGroupID, resPkt.totalQuota,
resPkt.quotaLeft, resPkt.numberOfOwners, resPkt.numberOfOwnerSlotsInUse,
resPkt.maxNumberOfOwnersAllowed] ←
ReadOwnerFileHeader[localConversation, argPkt.transID, argPkt.volumeGroupID];
pktLength ← 13;
RETURN[returnLength: pktLength];
END; -- ReadOwnerFileHeaderStub.
ReadNextOwnerRecordStub: --PROCEDURE [conversation: OldAlpineEnvironment.Conversation,
-- transID: OldAlpineEnvironment.TransID, volumeGroupID: OldAlpineEnvironment.VolumeGroupID,
-- contRecNum: INT, desiredProperties: OldAlpineEnvironment.OwnerPropertySet]
-- RETURNS [entryEmpty: BOOLEAN, entryValid: BOOLEAN, owner: OldAlpineEnvironment.OwnerName,
-- properties: LIST OF OldAlpineEnvironment.OwnerPropertyValuePair,
-- nextContRecNum: INT]-- RpcPrivate.Dispatcher =
INLINE BEGIN
owner: OldAlpineEnvironment.OwnerName;
properties: LIST OF OldAlpineEnvironment.OwnerPropertyValuePair;
ArgumentOverlay: TYPE = MACHINE DEPENDENT RECORD [
transferIndex (0): RpcControl.ProcedureIndex, transID (1): OldAlpineEnvironment.TransID,
volumeGroupID (10): OldAlpineEnvironment.VolumeGroupID, contRecNum
(15): INT, desiredProperties (17): OldAlpineEnvironment.OwnerPropertySet];
ResultOverlay: TYPE = MACHINE DEPENDENT RECORD [
entryEmpty (0): BOOLEAN, entryValid (1): BOOLEAN, nextContRecNum
(2): INT];
argPkt: LONG POINTER TO ArgumentOverlay = @pkt.data[0];
resPkt: LONG POINTER TO ResultOverlay = @pkt.data[0];
pktLength: RpcPrivate.DataLength ← 18;
Lupine.CheckPktLength[pkt: pkt, pktLength: pktLength];
[resPkt.entryEmpty, resPkt.entryValid, owner, properties, resPkt.nextContRecNum]
←
ReadNextOwnerRecord[localConversation, argPkt.transID, argPkt.volumeGroupID,
argPkt.contRecNum, argPkt.desiredProperties];
pktLength ← 4;
BEGIN -- Marshal owner: OldAlpineEnvironment.OwnerName to pkt.data[pktLength].
IF pktLength+2 > RpcPrivate.maxDataLength
THEN pktLength ← Lupine.StartNextPkt[pkt: pkt, pktLength: pktLength];
pkt.data[pktLength] ← owner=NIL; pktLength ← pktLength+1;
IF owner # NIL
THEN BEGIN
textRope: Rope.Text = Rope.InlineFlatten[r: owner];
IF textRope.length > RpcPrivate.maxShortStringLength
THEN Lupine.MarshalingError;
pkt.data[pktLength] ← textRope.length; pktLength ← pktLength+1;
pktLength ← Lupine.CopyToPkt[pkt: pkt, pktLength: pktLength,
dataAdr: BASE[DESCRIPTOR[textRope.text]], dataLength: Lupine.WordsForChars[textRope.length],
alwaysOnePkt: FALSE];
END; -- IF owner # NIL.
END; -- Marshal owner.
BEGIN -- Marshal properties: LIST OF OldAlpineEnvironment.OwnerPropertyValuePair
-- to pkt.data[pktLength].
thisNode1: LIST OF OldAlpineEnvironment.OwnerPropertyValuePair;
listLength: Lupine.ListHeader ← 0;
FOR thisNode1 ← properties, thisNode1.rest UNTIL thisNode1 =
NIL DO
listLength ← listLength + 1; ENDLOOP;
IF pktLength+2 > RpcPrivate.maxDataLength
THEN pktLength ← Lupine.StartNextPkt[pkt: pkt, pktLength: pktLength];
Lupine.RpcPktDoubleWord[pkt, pktLength]↑ ← listLength;
pktLength ← pktLength + 2;
FOR thisNode1 ← properties, thisNode1.rest UNTIL thisNode1 =
NIL DO
BEGIN -- Marshal thisNode1.first: OldAlpineEnvironment.OwnerPropertyValuePair
-- to pkt.data[pktLength].
pktLength ← Lupine.CopyToPkt[pkt: pkt, pktLength: pktLength,
dataAdr: @thisNode1.first, dataLength: SIZE[OldAlpineEnvironment.OwnerPropertyValuePair],
alwaysOnePkt: FALSE];
BEGIN OPEN record: thisNode1.first;
WITH variant: record SELECT FROM
createAccessList =>
BEGIN -- Marshal variant: RECORD [createAccessList:
-- AccessList] to pkt.data[pktLength].
BEGIN OPEN record: variant;
BEGIN -- Marshal record.createAccessList: AccessList
-- to pkt.data[pktLength].
thisNode5: AccessList;
listLength: Lupine.ListHeader ← 0;
FOR thisNode5 ← record.createAccessList, thisNode5.rest
UNTIL thisNode5 = NIL DO
listLength ← listLength + 1; ENDLOOP;
IF pktLength+2 > RpcPrivate.maxDataLength
THEN pktLength ← Lupine.StartNextPkt[pkt: pkt,
pktLength: pktLength];
Lupine.RpcPktDoubleWord[pkt, pktLength]↑ ← listLength;
pktLength ← pktLength + 2;
FOR thisNode5 ← record.createAccessList, thisNode5.rest
UNTIL thisNode5 = NIL DO
BEGIN -- Marshal thisNode5.first: RName to pkt.data[pktLength].
IF pktLength+2 > RpcPrivate.maxDataLength
THEN pktLength ← Lupine.StartNextPkt[pkt: pkt,
pktLength: pktLength];
pkt.data[pktLength] ← thisNode5.first=NIL; pktLength
← pktLength+1;
IF thisNode5.first # NIL
THEN BEGIN
textRope: Rope.Text = Rope.InlineFlatten[r:
thisNode5.first];
IF textRope.length > RpcPrivate.maxShortStringLength
THEN Lupine.MarshalingError;
pkt.data[pktLength] ← textRope.length; pktLength
← pktLength+1;
pktLength ← Lupine.CopyToPkt[pkt: pkt, pktLength:
pktLength, dataAdr: BASE[DESCRIPTOR[textRope.text]],
dataLength: Lupine.WordsForChars[textRope.length],
alwaysOnePkt: FALSE];
END; -- IF thisNode5.first # NIL.
END; -- Marshal thisNode5.first.
ENDLOOP; -- FOR thisNode5.
END; -- Marshal record.createAccessList.
END; -- OPEN record: variant.
END; -- Marshal variant.
modifyAccessList =>
BEGIN -- Marshal variant: RECORD [modifyAccessList:
-- AccessList] to pkt.data[pktLength].
BEGIN OPEN record: variant;
BEGIN -- Marshal record.modifyAccessList: AccessList
-- to pkt.data[pktLength].
thisNode5: AccessList;
listLength: Lupine.ListHeader ← 0;
FOR thisNode5 ← record.modifyAccessList, thisNode5.rest
UNTIL thisNode5 = NIL DO
listLength ← listLength + 1; ENDLOOP;
IF pktLength+2 > RpcPrivate.maxDataLength
THEN pktLength ← Lupine.StartNextPkt[pkt: pkt,
pktLength: pktLength];
Lupine.RpcPktDoubleWord[pkt, pktLength]↑ ← listLength;
pktLength ← pktLength + 2;
FOR thisNode5 ← record.modifyAccessList, thisNode5.rest
UNTIL thisNode5 = NIL DO
BEGIN -- Marshal thisNode5.first: RName to pkt.data[pktLength].
IF pktLength+2 > RpcPrivate.maxDataLength
THEN pktLength ← Lupine.StartNextPkt[pkt: pkt,
pktLength: pktLength];
pkt.data[pktLength] ← thisNode5.first=NIL; pktLength
← pktLength+1;
IF thisNode5.first # NIL
THEN BEGIN
textRope: Rope.Text = Rope.InlineFlatten[r:
thisNode5.first];
IF textRope.length > RpcPrivate.maxShortStringLength
THEN Lupine.MarshalingError;
pkt.data[pktLength] ← textRope.length; pktLength
← pktLength+1;
pktLength ← Lupine.CopyToPkt[pkt: pkt, pktLength:
pktLength, dataAdr: BASE[DESCRIPTOR[textRope.text]],
dataLength: Lupine.WordsForChars[textRope.length],
alwaysOnePkt: FALSE];
END; -- IF thisNode5.first # NIL.
END; -- Marshal thisNode5.first.
ENDLOOP; -- FOR thisNode5.
END; -- Marshal record.modifyAccessList.
END; -- OPEN record: variant.
END; -- Marshal variant.
ENDCASE => NULL; -- WITH variant: record.
END; -- OPEN record: thisNode1.first.
END; -- Marshal thisNode1.first.
ENDLOOP; -- FOR thisNode1.
END; -- Marshal properties.
RETURN[returnLength: pktLength];
END; -- ReadNextOwnerRecordStub.
ChangeSpaceForOwnerStub: --PROCEDURE [conversation: OldAlpineEnvironment.Conversation,
-- transID: OldAlpineEnvironment.TransID, volumeGroupID: OldAlpineEnvironment.VolumeGroupID,
-- owner: OldAlpineEnvironment.OwnerName, nPages: OldAlpineEnvironment.PageCount]--
RpcPrivate.Dispatcher =
INLINE BEGIN
owner: OldAlpineEnvironment.OwnerName;
ArgumentOverlay: TYPE = MACHINE DEPENDENT RECORD [
transferIndex (0): RpcControl.ProcedureIndex, transID (1): OldAlpineEnvironment.TransID,
volumeGroupID (10): OldAlpineEnvironment.VolumeGroupID, nPages
(15): OldAlpineEnvironment.PageCount];
argPkt: LONG POINTER TO ArgumentOverlay = @pkt.data[0];
pktLength: RpcPrivate.DataLength ← 17;
BEGIN -- Unmarshal owner: OldAlpineEnvironment.OwnerName from
-- pkt.data[pktLength].
ropeIsNIL: Lupine.NilHeader;
ropeIsNIL ← pkt.data[pktLength]; pktLength ← pktLength+1;
IF ropeIsNIL
THEN owner ← NIL
ELSE BEGIN
ropeLength: Lupine.RopeHeader;
textRope: Rope.Text;
ropeLength ← pkt.data[pktLength]; pktLength ← pktLength+1;
IF ropeLength > RpcPrivate.maxShortStringLength
THEN Lupine.UnmarshalingError;
owner ← textRope ← Rope.NewText[size: ropeLength];
pktLength ← Lupine.CopyFromPkt[pkt: pkt, pktLength: pktLength,
dataAdr: BASE[DESCRIPTOR[textRope.text]], dataLength: Lupine.WordsForChars[ropeLength],
alwaysOnePkt: TRUE];
END; -- IF ropeIsNIL.
END; -- Unmarshal owner.
Lupine.CheckPktLength[pkt: pkt, pktLength: pktLength];
ChangeSpaceForOwner[localConversation, argPkt.transID, argPkt.volumeGroupID,
owner, argPkt.nPages];
pktLength ← 0;
RETURN[returnLength: pktLength];
END; -- ChangeSpaceForOwnerStub.
ReadDBUniversalFileStub: --PROCEDURE [volumeGroupID: OldAlpineEnvironment.VolumeGroupID]
-- RETURNS [dBID: OldAlpineEnvironment.UniversalFile]-- RpcPrivate.Dispatcher
=
INLINE BEGIN
ArgumentOverlay: TYPE = MACHINE DEPENDENT RECORD [
transferIndex (0): RpcControl.ProcedureIndex, volumeGroupID (1):
OldAlpineEnvironment.VolumeGroupID];
ResultOverlay: TYPE = MACHINE DEPENDENT RECORD [
dBID (0): OldAlpineEnvironment.UniversalFile];
argPkt: LONG POINTER TO ArgumentOverlay = @pkt.data[0];
resPkt: LONG POINTER TO ResultOverlay = @pkt.data[0];
pktLength: RpcPrivate.DataLength;
Lupine.CheckPktLength[pkt: pkt, pktLength: 6];
[resPkt.dBID] ← ReadDBUniversalFile[argPkt.volumeGroupID];
pktLength ← 9;
RETURN[returnLength: pktLength];
END; -- ReadDBUniversalFileStub.
ReportAccessCacheStatsStub: --PROCEDURE RETURNS [nCacheEntries: NAT,
-- statsCacheHit: INT, statsGrapevineAuthorized: INT, statsGrapevineNotAuthorized:
-- INT, statsRegServersDown: INT, statsIndivGrapeNotAuthorized: INT]--
RpcPrivate.Dispatcher =
INLINE BEGIN
ResultOverlay: TYPE = MACHINE DEPENDENT RECORD [
nCacheEntries (0): NAT, statsCacheHit (1): INT, statsGrapevineAuthorized
(3): INT, statsGrapevineNotAuthorized (5): INT, statsRegServersDown
(7): INT, statsIndivGrapeNotAuthorized (9): INT];
resPkt: LONG POINTER TO ResultOverlay = @pkt.data[0];
pktLength: RpcPrivate.DataLength;
Lupine.CheckPktLength[pkt: pkt, pktLength: 1];
[resPkt.nCacheEntries, resPkt.statsCacheHit, resPkt.statsGrapevineAuthorized,
resPkt.statsGrapevineNotAuthorized, resPkt.statsRegServersDown,
resPkt.statsIndivGrapeNotAuthorized] ←
ReportAccessCacheStats[];
pktLength ← 11;
RETURN[returnLength: pktLength];
END; -- ReportAccessCacheStatsStub.
ReportAccessVolatileStatsStub: --PROCEDURE RETURNS [nRegs: INT, nInits:
-- INT, nUnRegs: INT, nReorganizes: INT, nEnumAlls: INT, nAllocReqsWin:
-- INT, nAllocReqsLose: INT, nDeallocReqs: INT, nRemoveOwner: INT,
-- nEnumFindWin: INT, nEnumFindLose: INT, nSetEnums: INT, nActions:
-- INT, nPhaseOnes: INT, nPhaseTwos: INT, nAborts: INT]-- RpcPrivate.Dispatcher
=
INLINE BEGIN
ResultOverlay: TYPE = MACHINE DEPENDENT RECORD [
nRegs (0): INT, nInits (2): INT, nUnRegs (4): INT, nReorganizes
(6): INT, nEnumAlls (8): INT, nAllocReqsWin (10): INT, nAllocReqsLose
(12): INT, nDeallocReqs (14): INT, nRemoveOwner (16): INT, nEnumFindWin
(18): INT, nEnumFindLose (20): INT, nSetEnums (22): INT, nActions
(24): INT, nPhaseOnes (26): INT, nPhaseTwos (28): INT, nAborts
(30): INT];
resPkt: LONG POINTER TO ResultOverlay = @pkt.data[0];
pktLength: RpcPrivate.DataLength;
Lupine.CheckPktLength[pkt: pkt, pktLength: 1];
[resPkt.nRegs, resPkt.nInits, resPkt.nUnRegs, resPkt.nReorganizes,
resPkt.nEnumAlls, resPkt.nAllocReqsWin, resPkt.nAllocReqsLose,
resPkt.nDeallocReqs, resPkt.nRemoveOwner, resPkt.nEnumFindWin,
resPkt.nEnumFindLose, resPkt.nSetEnums, resPkt.nActions, resPkt.nPhaseOnes,
resPkt.nPhaseTwos, resPkt.nAborts] ←
ReportAccessVolatileStats[];
pktLength ← 32;
RETURN[returnLength: pktLength];
END; -- ReportAccessVolatileStatsStub.
CrashSystemStub: --PROCEDURE [conversation: OldAlpineEnvironment.Conversation,
-- transID: OldAlpineEnvironment.TransID]-- RpcPrivate.Dispatcher
=
INLINE BEGIN
ArgumentOverlay: TYPE = MACHINE DEPENDENT RECORD [
transferIndex (0): RpcControl.ProcedureIndex, transID (1): OldAlpineEnvironment.TransID];
argPkt: LONG POINTER TO ArgumentOverlay = @pkt.data[0];
pktLength: RpcPrivate.DataLength ← 10;
Lupine.CheckPktLength[pkt: pkt, pktLength: pktLength];
CrashSystem[localConversation, argPkt.transID];
pktLength ← 0;
RETURN[returnLength: pktLength];
END; -- CrashSystemStub.
-- No module initialization.
END. -- OldAlpineDebugRpcServerImpl.