XNSAdobeDoc.tioga
Copyright Ó 1990 by Xerox Corporation. All rights reserved.
Bill Jackson (bj), March 21, 1990 0:55:57 am PST
XNSAdobeDoc
PCEDAR 2.0 %
XNSAdobeDoc
The "Adobe" Action Request/Report System
Bill Jackson
Ó Copyright 1990 Xerox Corporation. All rights reserved.
Abstract: Adobe is a Project Mangement tools that implements an "AR" system. XNSAdobe implements the network-based substrate.
Created by: Bill Jackson & Phil James
Maintained by: Bill Jackson <BJackson:PARC:Xerox>
Keywords: Adobe, Project Mangement, AR, RPC
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304

1. Testing
Manual steps for stub generation!
AdobeP75V2ClientImpl.mesa
KeyedPossibilitiesList & EnumerationList have funnyLength passed in as a parameter!
x7: CARDINAL ~ IF ( temp34.funnyLength = CARD16.LAST )
THEN 1 ELSE temp34.funnyLength;
Startup
XNSLogin
install XNSAdobeClient
install XNSAdobeTest
Enumerated/KeyedPossibility
"[
FieldItem(ar): [name: Number, tools: [
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0]],
ar: []],
FieldItem(time): [name: Submit Date, tools: [
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: CurrentTOD, systemMust: TRUE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0]],
time: []],
FieldItem(bounded): [name: Submitter, tools: [
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: LoginName, systemMust: TRUE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0]],
bounded: 40],
FieldItem(numeric): [name: Age, tools: [
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: 37, systemMust: TRUE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0]],
numeric: []],
FieldItem(enumerated): [name: System, tools: [
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: TRUE, place: [ord: 0, co: 0], width: 65534]],
funnyLength: 0, field: 65535, possibilities: [
[funnyLength: 4, keyedDependency: 65535, enumRecs: [
[tag: BWS, item: 1],
[tag: Tools: Mesa Dev, item: 2],
[tag: Other, item: 3],
[tag: Nil, item: 65535]
]]
]],
FieldItem(enumerated): [name: Subsystem, tools: [
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: FALSE, place: [ord: 0, co: -2], width: 0],
[default: "", systemMust: TRUE, place: [ord: 0, co: 0], width: 65534]],
funnyLength: 0, field: 4, possibilities: [
[funnyLength: 3, keyedDependency: 1, enumRecs: [
[tag: Attention Window, item: 4],
[tag: Background Manager, item: 5],
[tag: Nil, item: 3]
]]
]]"
enumRecsLength: CARDINAL ~ fieldList[dependsOn].possibilities[0].enumRecs.length
UProc16p2: PROC [s: CrRPC.STREAM, enumRecsLength: CARDINAL]
RETURNS
[res: FieldItemValue] ~ {
junk: CARDINAL ← CrRPC.GetCard16[s];
dependsOn: CARDINAL ← CrRPC.GetCard16[s];
keyseqLength: CARDINAL IF ( dependsOn = 65535 ) THEN 1 ELSE enumRecsLength;
key: KeyedPossibilities ← NEW[KeyedPossibilities[keyseqLength]];
FOR kk: CARDNAL IN [0..keyseqLength) DO
eseqLength: CARDINAL ← CrRPC.GetCard16[s];
about: CARDINAL ← CrRPC.GetCard16[s];
eseq: EnumeratedSequence ← NEW[EnumeratedSequenceType[eseqLength]];
FOR ii: CARDINAL IN [0..(eseqLength-1)) DO
xx: xx ~ eseq.seq[ii];
xx.string ← CrRPC.GetRope[s];
xx.value ← CrRPC.GetCard16[s];
ENDLOOP;
{
the last NIL
xx: xx ~ eseq.seq[eseqLength];
xx.string ← CrRPC.GetRope[s];
xx.value ← 0;
};
key.seq[kk] ← [about, eseq];
ENDLOOP;
res ← NEW[FieldItemValueObject.enumerated ← [dependsOn, key] ];
};
FieldList
tool1: xx ~ [0 0 0 65534 0]
seq3: xx ~ [tool1] [tool1] [tool1]
seq4: xx ~ [tool1] [tool1] [tool1] [tool1]
seq5: xx ~ [tool1] [tool1] [tool1] [tool1] [tool1]
seq6: xx ~ [tool1] [tool1] [tool1] [tool1] [tool1] [tool1]
seq5b: xx ~ [1 0 65534 0] [tool1] [tool1] [tool1] [tool1]
seq6b: xx ~ [tool1] [tool1] [tool1] [tool1] [tool1] [0 1 0 0 65534]
fieldList: (22) [
0 "Number", [seq6]
0 "CurrentTOD", [seq5b]
0 "LoginName", [seq5b] 40
1 "Submit Date", 0 0 0 65534
1 "Edit-Date", "CurrentTOD", 1 0 65534 0 [seq5]
2 "Age", [0 0 0 65534 0] 2 13111 [seq5b]
3 "Component Fix Version", [seq6] 10
3 "Attn", [seq6] 20
3 "Related Numbers", [seq6] 30
3 "Keywords", [seq6] 60
3 "Assigned To", [seq6] 60
3 "Subject", [seq6] 80
3 "Submitter", 0 0 0 65534
3 "Edit-By", ["LoginName", 1 0 65534 0] [seq5] 40
4 "Hardware", [seq6b]
0 65535 4 65535 [ ["Sun 3", 21] ["Sun 4", 22] ["Other", 23] ["Nil", 65535] ]
4 "Operation Frequency", [seq6b]
0 65535 4 65535 [ ["Basic Frequent Op", 24], ["Limited Op", 25], ["Complex/Infreq Op", 26], ["Nil", 65535] ]
4 "System", [seq6b]
0 65535 4 65535 [ ["BWS", 1], ["Tools: Mesa Dev", 2], ["Other", 3], ["Nil", 65535] ]
4 "Type", [seq6b]
0 65535 3 65535 [ ["Crash", 9], ["Hang", 10], ["Nil", 65535] ]
4 "Status", [0 0 0 65534 0] [[3 20041 19456] 1 0 65534 0] [seq3] [0 1 0 0 65534]
0 65535 11 65535 [ ["New", 11], ["Open", 12], ["InfoRequested", 13], ["Wish", 14], ["Fixed", 15], ["Closed", 16], ["Declined", 17], ["Superseded", 18], ["Obsolete", 19], ["Other", 20], ["Nil", 65535] ]
4 "Subsystem", [seq5] [0 3 0 0 65534]
0 4 3 1 ["Attention Window", 4], ["Background Manager", 5], ["Nil"] ]
3 65535 [ [2, "Compile"], [6, "Other"], [7, "Nil"] ]
2 65535 [ [3, "AR database definition"], [8, "Nil"] ]
65535
5 "Description", [seq6]
5 "Test Case", [seq6]
5 "Workaround", [seq6]
5 "Disposition", [seq6]
]
Functions
← Convert.RopeFromXNSAddress[XNSCH.LookupAddressFromRope["Rubik AS Test:PARC:Xerox"].address]
"0-089.2-852-155-539."
XNSAdobe.GetDatabaseDescription [ref: GetDatabaseDescription.trace]
server: Rubik AS Test:PARC:Xerox
system/database: CedarAdobeTest
Description:
Name: CedarAdobeTest
Host: NewYork:PARC:Xerox
Directory: Rubik/ARs
Version: 0
...
XNSAdobe.GetLocationOfARs
This one is very suspicious!
server: Rubik AS Test:PARC:Xerox
system/database: CedarAdobeTest
GetLocationOfARs:
XNSAdobe.ReadLastARNumber
server: Rubik AS Test:PARC:Xerox
system/database: CedarAdobeTest
lastAR: 12
XNSAdobe.GetNextSubmitNumber
server: Rubik AS Test:PARC:Xerox
system/database: CedarAdobeTest
NextSubmitNumber: 14
Broken stuff
Silent Death!
XNSAdobe.ListDatabases
XNSAdobe.GetVersion
Error Death!
XNSAdobe.PutSubmitNumber
2. Programmer's Interface
XNSAdobeTestImpl
Basically, all the PUBLIC proc's compose what should be the "AdobeClient" interace.