2.1 ICF Syntax

ICF syntax is as follows:
[#pragma activation_policy method | transaction | process]
[#pragma transaction_policy never | ignore | optional | always]
[#pragma concurrency_policy user_controlled | system_controlled]
[#pragma retry_policy never | always]
[Module module - name {
   ]
   implementation[implementation - name] 
     {
      implements(module - name::interface - name);
      [activation_policy(method | transaction | process);]
      [transaction_policy(never | ignore | optional | always);]
      [concurrency_policy(user_controlled | system_controlled);]
        [retry_policy(never | always)];
   };[};]
pragmas
The four optional pragmas allow you to set a specific policy as the default policy for the entire ICF for all implementations that do not have an explicit activation_policy, transaction_policy, concurrency_policy, or retry_policy statement. This feature relieves the programmer from having to specify policies for each implementation and/or allows overriding of the defaults.
Module module-name
The module-name variable is optional if it is optional in the OMG IDL file. This variable is used for scoping and grouping. Its use must be consistent with the way it is used inside the OMG IDL file.
implementation-name
This variable is optional and is used as the name of the servant or as the class name in the server. It is constructed using interface-name with an _i appended if it is not specified by the programmer.
implements (module-name::interface-name)
This variable identifies the module and the interface to which the activation policy and the transaction policy apply.
activation_policy
For a description of the activation policies, see Activation Policy.
transaction_policy
For a description of the transaction policies, see Transaction Policies.
concurrency_policy
For description of the concurrency policies, see Parallel Objects.
retry_policy
For a description of the retry policy, see IIOP Client Failover.