type

The next attribute we use in naming applications is based on hierarchical typing of the application and of the management protocols. The type field is descriptive both of the protocol that is being used and of the state of the application within the protocol at a particular time. For example, a particular application such as vat may use a private protocol to communicate between instantiations of the application, so a vat type is defined, and only applications which believe they can understand the vat protocol and are interested in it would register themselves as being of type <#1966#> vat<#1966#>. An alternative way of using the type field is to embed the finite state machine corresponding to the protocol within the type field - thus a floor management protocol could use types <#1967#> floor.management.holder<#1967#> and <#1968#> floor.management.requester<#1968#> in a simple floor control protocol, that can cope with multiple requests at once. A final way of using the type field is to allow extensions to existing protocols in a transparent fashion, by simply extending the type field by using a version number. Some examples of these techniques can be found in the examples given. Some base types are needed to ensure that common applications can communication with each other. As a first pass, the following types have been suggested: It should be noted that types can be hierarchical, so (for example) any message addressed to <#1981#> audio<#1981#> would address both <#1982#> audio.send<#1982#> and <#1983#> audio.recv<#1983#> applications. It should also be noted that an application expressing an interest in a type does not necessarily mean that the application has to be able to respond to all the functions that can be addresses to that type. Also, (if required) the CCC library will acknowledge receipt on behalf of the application. Examples of the types existing applications would register under are: In the current implementation, the type field is text based, so that debugging is simpler, and we can extend the type hierarchy without difficulty.