next up previous top
Next: RPCTypeDef
Up: Property
Previous: RecordFormat

Rename

Description

The Rename property is used to resolve name mismatches in ProcedureCall, DataAccess, and RemoteProcCall connections and in simple binds in components with composite implementations.

In a simple bind, the names and the types of the two players involved must be identical, or the UniCon compiler will report these conditions as errors and will not perform the bind. The system designer can use the Rename property in the property list of a simple bind to resolve a name mismatch, however. When the UniCon compiler encounters the Rename property in a simple bind, it allows a name mismatch to be legal in the definition, and it resolves the name mismatch in the source code implementation during the system build. The Rename property is not necessary (and therefore not legal) in the property list of an abstraction bind because name mismatches are resolved by using the Match property.

In ProcedureCall, DataAccess, and RemoteProcCall connections, the names of all players in the connection must be identical. If they are not, the UniCon compiler reports this as an error and does not perform the connection. The system designer can use the Rename property in the property list of a connector instantiation or definition to resolve a name mismatch, however. When the UniCon compiler encounters the Rename property in a
ProcedureCall, DataAccess, or RemoteProcCall connection, it does not report name mismatches as errors, and it resolves the mismatches in the source code implementation of the system. The compiler renames all of the <identifier>s in the implementation that are associated with the players in the connection to a common, generated name. It does this during system construction with C language macros supplied in the compilation step of each source code module involved in the connection (with the -D compiler option). The Rename property is only legal in connectors of type ProcedureCall, DataAccess, and RemoteProcCall.

Although the Rename property can be specified in the <protocol> property list of a connector definition, it is typically specified in the the property list of a connector instantiation (i.e., in the property list of an <establish> or an <instantiation> of a connector). If specified in a connector definition, then every instantiation of that connector will allow name mismatches to be legal. Leaving this property out of a connector definition makes it more general, and it can be parameterized with the property during an instantiation.

Property Lists

The Rename property can legally be specified in the property list in the following UniCon language elements:

Value Syntax

The Rename property has no value part.

Required Rule

Optional

There is no default value for the Rename property; it has no value part.

Merge Rule

REPLACE

The merge rule for the Rename property has no effect, since the Rename property has no value part. The UniCon compiler simply views the property has either having been specified or not.

Semantic Checks

No semantic checks are performed; the Rename property has no value part.

Example

The following is an example of a specification of a Rename property. It is embedded in the instantiation of a RemoteProcCall connector. Assume for the sake of the example that client represents a SchedProcess component instantiation containing an RPCCall player named timeget. Assume also that server represents a SchedProcess component instantiation containing the corresponding RPCDef player timeget_routine:

  ESTABLISH RTM-remote-proc-call WITH
    client.timeget AS Caller
    server.timeget_routine AS Definer
    RENAME
    IDLTYPE (mach)
  END RTM-remote-proc-call
The UniCon compiler will rename the identifiers timeget and timeget_routine in the implementation to a third, generated identifier. It will also generate the correct "glue code" for the remote procedure call connection and then build the system successfully. The Rename property must be present in order for the UniCon compiler to do the renaming. If it is not present, the compiler will report the name mismatch as an error.

Below is an example of the Rename property embedded in a simple bind. Assume for the sake of the example that this simple bind is contained in the composite implementation of a component that is exporting a RoutineDef player called timeget in the interface. Assume also that in the composite implementation, before this simple bind definition, there is an instantiation of a Module component containing a RoutineDef player called timeget_routine. Assume that the instantiation name of the Module component is clientapp:

  BIND timeget TO clientapp.timeget_routine
    RENAME
  END timeget
The Rename property is required to resolve a name mismatch in a simple bind. If this prop
erty were not specified in the example above, the UniCon compiler would report the name
mismatch as an error.
next up previous top
Next: RPCTypeDef
Up: Property
Previous: RecordFormat

Comments? Mail the current maintainer of this page.

Author: Gregory Zelesnik

Last Modified: May 12, 1996