1. SETUP( clientID )
a) Input parameters: clientID
b) Output value: none
c) Process description:
SETUP( clientID )
|
---> ChaimsClientRecord.addClientEntry(...)
|
|
|-------|
|
|
end

a) Input parameters:
The first two parameters are self-describing,
the third contains a list
of (name,value) pairs, where name corresponds
to a parameter name in the
repository and value is a blob (encoded
ASN.1 gentype).
b) Output value:
callID
c) Process description:
The following step numbers correspond
to those in the figure below.
INVOKE(...)
|
|
|---> LocalObjectWrapper.getLocalObjectMethodID(...)
|
|
methodID <-|
|
|
1 |---> ChaimsCallRecord.createNewCallEntry(...)
|
|
callID <---|
|
|
|---> ChaimsCallRecord.startChaimsThread(...)
|
|
|---> CallEntry.startThread(...)
|
|
|---> ChaimsThread.prepareToStartThread(...)
|
|
|<-----|
|
|
2
|---> ChaimsThread.start(...)
|
|----- | (start a thread)
|
|
| ChaimsThread.run()
|-----|
|
|
|
3
|
|--->LocalObjectWrapper.callLocalMethod(...)
| ------|
|
|
|
4 |
|---><MethodXWrapper>.callMethod(...)
|
|
call <-
(pr|eparing parameters)
ID
|
5
|---><ServerObject>.<MethodX1>
|
|
6
result1 <-|
|
|
(co|nverting result1 in blob)
|
|
7
|---> LocalMethodWrapper.setPartialResult(...)
|
|
8
|--->CallEntry.setResultContainer(...)
|
|
|-----|
|
|
|------|
|
|
|---><ServerObject>.<MethodX2>
|
|
result2 <-|
|
. . .
|
|
|---><ServerObject>.<MethodXn>
|
|
resultn <-|
|
|
(co|nverting result1 in blob)
|
|
|---> LocalMethodWrapper.setPartialResult(...)
|
|
|--->CallEntry.setResultContainer(...)
|
|
|-----|
|
|
|------|
|
|
9
|---> LocalMethodWrapper.setResultDone(...)
|
|
10
|--->CallEntry.setStatus( DONE )
|
|
|-----|
|
|------|
|
|
|------|
|
|
|----|
|
|
end

3. EXAMINE( callID )
a) Input parameters: callID (returned by INVOKE)
b) Output value: current status of the correponding
invocation (EXECUTING, INVALID, DONE)
c) Process description:
EXAMINE( callID
)
|
---> ChaimsCallRecord.getStatus(...)
|
|
status
<-|
|
|
status<|
EXAMINE simply
throws out the value of the column >>status<< of the corresponding
entry in >>ChaimsCallEntry<<
(see figure 2).
4. ESTIMATE( clientID, methodName, attrValContainer )
a) Input parameters: the first two parameters
are self-describing, the third
contains
the type of the information asked for (TIME, FEE, VOLUME)
b) Output value: ChaimsAttrValContainer
containing (name, value) pairs, where name is
of (TIME, FEE, VOLUME) and value is a blob containing the ASN.1 encoded
return value
c) Process description:
not implemented
5. EXTRACT(callID, attrValContainer)
a) Input parameters:
callID
attrValCont: contains (name, value) pairs, where name is
one of the result names (see repository) value is empty
b) Output value: ChaimsAttrValContainer,
it's attrValContainer with the filled in return
blobs (ASN.1 encoded return values)
c) Process description:
EXTRACT(callID, attrValContainer )
|
---> ChaimsCallRecord.getCallEntry(...)
|
|
callEntry <-|
|
|
|---> CallEntry.getResultContainer(...)
|
|
resultCont <-|
|
|
result<--|
Cont
EXTRACT simply
throws the wanted (name, value) pairs of the column >>resCont<< of
the
corresponding
entry in >>ChaimsCallEntry<< (see figure 2); the information about
the wanted pairs
is included in attrValContainer (that simply has to be filled up)
6. TERMINATE( callID )
a) Input parameters: callID of the invocation
to be terminated
b) Output value: none
c) Process description:
TERMINATE( callID
)
|
|
|--> ChaimsCallRecord.terminateChaimsThread(...)
|
|
|---> ChaimsCallRecord.getCallEntry(...)
|
|
callEntry <---|
|
|
|---> CallEntry.stopThread(...)
|
|
|--->ChaimsThread.stop(...)
|
th|read stopped
|
|
|------|
|
|
|------|
|
|
|-----|
|
|
|---> ChaimsCallRecord.deleteCallEntry(...)
|
|
|------|
|
|
|--> LocalObjectWrapper.deleteMethodWrapper(...)
|
|
|-----|
|
|
end
TERMINATE stops the thread
of the corresponding invocation, delets the
corresponding entry in ChaimsCallRecord
(see figure 2) and removes the
corresponding LocalMethodWrapper
from LocalObjectWrapper.
7. TERMINATEALL( clientID )
a) Input parameters: clientID, all incocations
of this client have to be terminated
b) Output value: none
c) Process description:
For all entries in ChaimsCallRecord storing >>clientID<< TERMINATE is invoked.
8. SETPARAM(clientID, attrValContainer )
a) Input parameters: clientID, the corresponding
client's default values are set
attrValContainer: (name, value) pairs containing default values
b) Output value: none
c) Process description:
SETPARAM(clientID,
attrValContainer )
|
|
|--> ChaimsClientRecord.getClientEntry(...)
|
|
clientEntry <-|
|
|
|--> ClientEntry.updateValues(...)
|
|
|-----|
|
|
end
SETPARAM
updates the corresponding entry in ChaimsClientRecord (see figure 1).
9. GETPARAM( clientID, attrValContainer )
a) Input parameters:
clientID: the
corresponding client's default values are sought
attrValContainer:
contains (name, value) pairs, where name is
one of the parameter names (see repository) and value is empty
b) Output value: ChaimsAttrValContainer,
it's attrValContainer with the filled in return
blobs (ASN.1 encoded parameter values)
c) Process description:
GETPARAM( clientID, attrValContainer )
|
|
|--> ChaimsClientRecord.getClientEntry(...)
|
|
clientEntry <-|
|
|
|--> ChaimsClientRecord.getDefaultEntry(...)
|
|
defaultEntry <-|
|
|
|--> clientEntry.getDefaultValues(...) //clientEntry
is not a class, it's an object
|
|
defaultValues <-|
|
|
|--> defaultEntry.getDefaultValues(...) //defaultEntry
is not a class, it's an object
|
|
defaultValues <-|
|
|
default<-|
Values