I'm little confused by this one. AIUI we have two configurations in the physical world:
1) two co-located components connected by a wire
   the PCS would contain two PCDs and a PWD for the connection

2) a component connected to the network via a binding
the PCD would contain a PCD with binding configuration for the remote service/reference

These could actually be mixed (a PCD may have one service/reference bound to the network and another wired to a different co-located component).

With that in mind, I don't see why we would have 'bindingType' on a PWD. In the optimal case, the controller would have reduced that to:
  <wire source="foo#ref" target="bar#srv"/>

In the non-optimal case, we would need to define interceptor chains for each of the source/callback operations, something like:
  <wire source="foo#ref" target="bar#srv">
    <interface>
       <operation name="method1">*
         <paramType type="type1"/>  <!-- deals with overloading
<ins:interceptorName ...>* <!-- unique QName for each interceptor type
    <callback>
       <operation name="cb1">*
         <ins:interceptorName ...>*

For the second configuration above, we would just specify binding configuration in the PCD for each physically bound service/reference. Something like:

  <cns:component name="foo">
    ...
<bns:reference name="ref">* <!-- unique QName for reference binding
       ... binding config elements ...
       <interface>
         <operation name="method1">*
<paramType type="type1"/> <!-- do we need to deal with overloading?
           <ins:interceptorName ...>* <!-- outbound interceptors
       <callback>
         <operation name="method1">*
           <paramType type="type1"/>
           <ins:interceptorName ...>* <!-- inbound interceptors

<bns:service name="srv">* <!-- unique QName for service binding
       ... binding config elements ...
       <interface>
         ...
       <callback>
         ...

--
Jeremy

On Feb 25, 2007, at 12:32 PM, Jim Marino wrote:

We need to settle on a marshalling format for WireDefinitions as they are propagated from the Controller/Master to a slave where they will be constituted as Wires. Meeraj has been doing work on the Marshallers and I started to implement part of the ConnectorImpl.connect(PhysicalWireDefinition definition) method which will do the actual Wire creation and attach steps. The issue is we need additional metadata about each invocation chain in the wire to be created. We will also need to be able to pass extensibility elements as part of an InterceptorDefinition for InterceptorBuilders to use. I think we need the following operation metadata:

- whether it is a forward or callback operation
- operation name and param types, the return type, and exception types.

We also need the an extensible metadata about the wire. For (at least) service contracts defined using Java, we need the FQN of the forward and callback services.

We have a couple of options for serializing this across. Since we need to support operation overloading, it may be easiest to do something similar to the following:

<wireDefinition sourceUri="" targetUri="" bindingType="">
        <metadata>
                <!-- extensibility elements -->
        </metadata >
        <operation name="" types="" exceptions="">
                <interceptorDefinition builder="">
                        <!-- extensibility elements -->
                </interceptorDefinition>
        </operation>
 </wireDefinition>

On the master, we also have the issue related to implementation- specific meta-data, e.g. data binding type information and @AllowsPassByReference. I don't think we should pollute ServiceContract or Operation with that metadata since they may be reused across implementations, which will wreak havoc with the contribution subsystem. For components, perhaps we need to add this information to the ComponentType (we could subclass where extensible elements only apply to specific implementation types)? For references and services, perhaps we add this information to BindingDefinition?

Thoughts?


Jim



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to