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 % FOR INTERNAL XEROX USE ONLY
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

For Internal Xerox Use Only
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.