### TAO's CORBA Object Services Directory Hierarchy

The file and directory organization for TAO services can be confusing at first glance (and even on subsequent ones to be honest), so we felt like some rationale and explanation of the directory hierarchy was needed.

For general sanity all TAO services files are located under `$TAO_ROOT/orbsvcs`.

It is expected that clients use more than one service at the same time (in fact some of the services already do, for instance the Event Service uses the Naming Service and the Scheduling Service). Every service is put together as a library. These libraries are located in `$TAO_ROOT/orbsvcs/orbsvcs`. Usually the include path is `$TAO_ROOT`, so files are included like this:

`#include "orbsvcs/CosNamingC.h"`

To simplify the IDL generation the skeletons are also on the library, this is not a problem for client programs and most services need to link the library anyway (since they use other services.) Further, the current support for collocation requires that clients link the skeleton files anyway.

In the future we intend to use ACE Service Configurator to give the users control over collocation of the services implementation. As a first cut all the service implementations are included in the orbsvcs library `$TAO_ROOT/orbsvcs/orbsvcs`. Since there are several services and each one is implemented using several files we have given a different directory to each service. This structure could also simplify a future split into several libraries (if it proves necessary).

The complete list of directories is:

Service | Implementation Sub-directory | Maitainer/Point-of-Contact
--- | --- | ---
A/V Streams Service | `orbsvcs/orbsvcs/AV` | Yamuna Krishnamurthy
Concurrency Service | `orbsvcs/orbsvcs/Concurrency` | None
Event Service | `orbsvcs/orbsvcs/CosEvent` | Pradeep Gore and OCI
Real-time Event Service | `orbsvcs/orbsvcs/Event` | Johnny Willemsen
LifeCycle Service | `orbsvcs/orbsvcs/LifeCycle` | None
Load Balancing Service | `orbsvcs/orbsvcs/LoadBalancing` | Ossama Othman
Logging Service | `orbsvcs/orbsvcs/Log` | D A Hanvey
Naming Service | `orbsvcs/orbsvcs/Naming` | DOC group
Property Service | `orbsvcs/orbsvcs/Property` | None
Scheduling Service | `orbsvcs/orbsvcs/Sched` | Venkita Subromianian
Security Service | `orbsvcs/orbsvcs/Security` | Ossama Othman
SSLIOP Pluggable Protocol | `orbsvcs/orbsvcs/SSLIOP` | Ossama Othman
Trading Service | `orbsvcs/orbsvcs/Trader` | None
Time Service | `orbsvcs/orbsvcs/Time` | None
Notification Service | `orbsvcs/orbsvcs/Notify` | Pradeep Gore
FtRt Event Service | `orbsvcs/orbsvcs/FtRtEvent` | Huang-huang Min
FaultTolerance | `orbsvcs/orbsvcs/FaultTolerance` | Bala Natarajan
IFRService | `orbsvcs/orbsvcs/IFRservice` | Jeff parsons
PortableGroup | `orbsvcs/orbsvcs/PortableGroup` | Frank Hunleth
RTCoSScheduling | `orbsvcs/orbsvcs/RTCOSScheduling` | Kevin Bryan

Note that in the current version of TAO we still have standalone binaries for some of the services. However, some applications may want to control what process implements a particular service. Therefore, it has proved useful for debugging purposes to keep the most used services separated. Users are highly encouraged to write their own executables if they want any changes in CORBA policies or would like to set their own bits when running a service. The executables that are packed with the TAO distribution should be viewed as an executable with a basic subset of features. The binaries in question are located in `$TAO_ROOT/orbsvcs`, and the list includes:

- Concurrency_Service/tao_cosconcurrency
- Dump_Schedule/tao_dump_schedule
- LifeCycle_Service/tao_coslifecycle
- LoadBalancer/tao_loadmanager
- CosEvent_Service/tao_cosevent
- Event_Service/tao_rtevent
- FTRT_Event_Service/Event_Service/ftrt_eventservice
- FTRT_Event_Service/Factory_Service/ftrtec_factory_service
- FTRT_Event_Service/Gateway_Service/ftrtec_gateway_service
- FT_ReplicationManager/tao_ft_replicationmanager
- Fault_Detector/tao_fault_detector
- Fault_Notifier/tao_fault_notifier
- Naming_Service/tao_cosnaming
- Scheduling_Service/tao_cosscheduling
- Trading_Service/tao_costrading
- Time_Service/tao_costime_server
- ImplRepo_Service/tao_imr_locator *(see below)*
- Notify_Service/tao_cosnotification

In the future we plan to use a single binary and ACE Service Configurator and keep a single binary.

The Implementation Repository is a unique service in that it starts server executables, and it doesn't make sense to collocate it in another server. Because of this, only the IDL files are located in `$TAO_ROOT/orbsvcs/orbsvcs`. The other files are all located in `$TAO_ROOT/orbsvcs/ImplRepo_Service`.

Finally the tests and example programs are located in `$TAO_ROOT/orbsvcs/tests`; once more each may involve more than a single binary, so each one is kept in its own directory; the following list describes the contents of each one:

## SEE ALSO

You may want to check TAO release notes for up to date information on status, changes, future work, etc.