Hatchery Information System


Plugin Overview

All functionality of the Hatchery Information System beyond the small amount in the main program, comes from plugins. Plugins are in dlls that are dynamically loaded upon startup by an installation of the Hatchery Information System. When the program starts up, it looks for plugins in a specific folder. All dll files in that folder are examined to see what they contain. A dll can hold many plugins, which can be of the same type or different types. Ideally there would be one plugin per dll, but it is often convenient to group together plugins that share functionality.

In addition to the plugins, there can also be a file that indicates the order of loading for the dlls. This is because some plugins will require the existence of other plugins to function. The loading order allows plugins to wait until after their dependencies to have loaded before they, themselves, are loaded.

The plugins in a dll are objects that must implement one of the set of interfaces that the Hatchery Information System requires. By far, the most common interface is the IHISGeneral interface, followed by IMWVSupplemental. Other interfaces are IShapeFactory for rearing units, IColorControl for coloring rearing units in the display, IMetric for exposing metric information, IInternalAPI for a variety of purposes, and ISilentPartner for plugins that have no direct user interactions. All plugins will be an object that implements one of these interfaces.

Any dll that includes plugins can also include any other objects that do not implement one of the interfaces. These objects will be ignored by the Hatchery Information System during loading.