<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Services on sillysky.net</title>
    <link>https://sillysky.net/docs/nyssr/services/</link>
    <description>Recent content in Services on sillysky.net</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Tue, 14 Oct 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://sillysky.net/docs/nyssr/services/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>CServiceRegistry / IServiceRegistry</title>
      <link>https://sillysky.net/docs/nyssr/services/serviceregistry/</link>
      <pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://sillysky.net/docs/nyssr/services/serviceregistry/</guid>
      <description>&lt;p&gt;The service registry manages 3 different object types:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Service starter&lt;/li&gt;&#xA;&lt;li&gt;Services&lt;/li&gt;&#xA;&lt;li&gt;Service listeners&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;the-service-starters&#34;&gt;The Service Starters&lt;/h2&gt;&#xA;&lt;p&gt;Service starters implement the &lt;a href=&#34;https://sillysky.net/docs/nyssr/services/iservicestarter/&#34;&gt;IServiceStarter&lt;/a&gt; interface. They&#xA;provide a list of dependencies for a service or the classes of a Java package.&#xA;When the dependencies are fulfilled and all required interfaces have been&#xA;registered in the service registry, the starter is started. On the other hand,&#xA;when a dependency is dropped from the service registry, the starter is&#xA;stopped.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IService</title>
      <link>https://sillysky.net/docs/nyssr/services/iservice/</link>
      <pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://sillysky.net/docs/nyssr/services/iservice/</guid>
      <description>&lt;p&gt;The IService helper interface is not mandatory for defining services. It only&#xA;simplifies the initialization and removal of services.&lt;/p&gt;&#xA;&lt;h2 id=&#34;services-activation&#34;&gt;Services activation&lt;/h2&gt;&#xA;&lt;p&gt;In this method the service can be initialized and registered to the&#xA;&lt;a href=&#34;https://sillysky.net/docs/nyssr/services/serviceregistry/&#34;&gt;service registry&lt;/a&gt;. Possible exceptions are caught and logged by the&#xA;system.&lt;/p&gt;&#xA;&lt;pre class=&#34;ss-javacode&#34;&gt;&lt;code class=&#34;language-java&#34;&gt;void activate(@NotNull &lt;a href=&#34;https://sillysky.net/docs/nyssr/services/serviceregistry/&#34;&gt;IServiceRegistry&lt;/a&gt; aServiceRegistry) throws Exception;&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&lt;h2 id=&#34;deactivating-the-service&#34;&gt;Deactivating the service&lt;/h2&gt;&#xA;&lt;p&gt;In this method the service can be de-initialized and deregistered from the&#xA;&lt;a href=&#34;https://sillysky.net/docs/nyssr/services/serviceregistry/&#34;&gt;service registry&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;pre class=&#34;ss-javacode&#34;&gt;&lt;code class=&#34;language-java&#34;&gt;void deactivate(@NotNull &lt;a href=&#34;https://sillysky.net/docs/nyssr/services/serviceregistry/&#34;&gt;IServiceRegistry&lt;/a&gt; aServiceRegistry) throws Exception;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>IServiceDependencyList</title>
      <link>https://sillysky.net/docs/nyssr/services/iservicedependencylist/</link>
      <pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://sillysky.net/docs/nyssr/services/iservicedependencylist/</guid>
      <description>&lt;p&gt;This is a helper class used by the &lt;a href=&#34;https://sillysky.net/docs/nyssr/services/serviceregistry/&#34;&gt;service registry&lt;/a&gt; to collect&#xA;dependencies from &lt;a href=&#34;https://sillysky.net/docs/nyssr/services/iservicestarter/&#34;&gt;service starters&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;add-a-dependency&#34;&gt;Add a dependency&lt;/h2&gt;&#xA;&lt;p&gt;To add a dependency on a singleton object, use the corresponding class.&lt;/p&gt;&#xA;&lt;pre class=&#34;ss-javacode&#34;&gt;&lt;code class=&#34;language-java&#34;&gt;void add(@NotNull Class aService);&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&lt;p&gt;For dependencies that are not a singleton, you must include a filter to&#xA;distinguish the individual instances of the class. Filters are a list of&#xA;properties separated by commas, such as &lt;code&gt;&amp;quot;key1=val1,key2=val2&amp;quot;&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;pre class=&#34;ss-javacode&#34;&gt;&lt;code class=&#34;language-java&#34;&gt;void add(@NotNull Class aService,&#xA;         @NotNull String aProperties);&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&lt;p&gt;An example is the specification of a &lt;a href=&#34;https://sillysky.net/docs/nyssr/namespaces/inamespace/&#34;&gt;namespace&lt;/a&gt;. Namespaces are not&#xA;singletons. They can be distinguished by namespace ID:&lt;/p&gt;</description>
    </item>
    <item>
      <title>IServiceListener</title>
      <link>https://sillysky.net/docs/nyssr/services/iservicelistener/</link>
      <pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://sillysky.net/docs/nyssr/services/iservicelistener/</guid>
      <description>&lt;p&gt;A service listener is registered at the &lt;a href=&#34;https://sillysky.net/docs/nyssr/services/serviceregistry/&#34;&gt;service registry&lt;/a&gt; to receive&#xA;service registration and de-registration information.&lt;/p&gt;&#xA;&lt;p&gt;A service listener implements two methods. This method is called when a&#xA;service is registered with the &lt;a href=&#34;https://sillysky.net/docs/nyssr/services/serviceregistry/&#34;&gt;service registry&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;pre class=&#34;ss-javacode&#34;&gt;&lt;code class=&#34;language-java&#34;&gt;void notifyServiceStarted(@NotNull &lt;a href=&#34;https://sillysky.net/docs/nyssr/services/serviceregistry/&#34;&gt;IServiceRegistry&lt;/a&gt; aServiceRegistry,&#xA;                          @NotNull Class aClass,&#xA;                          @NotNull Object aInstance,&#xA;                          @Nullable &lt;a href=&#34;https://sillysky.net/docs/nyssr/configuration/cstringproperties/&#34;&gt;CStringProperties&lt;/a&gt; aProperties) throws Exception;&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&lt;p&gt;The other method is called when a service is deregistered.&lt;/p&gt;&#xA;&lt;pre class=&#34;ss-javacode&#34;&gt;&lt;code class=&#34;language-java&#34;&gt;void notifyServiceStopped(@NotNull &lt;a href=&#34;https://sillysky.net/docs/nyssr/services/serviceregistry/&#34;&gt;IServiceRegistry&lt;/a&gt; aServiceRegistry,&#xA;                          @NotNull Class aClass,&#xA;                          @NotNull Object aInstance,&#xA;                          @Nullable &lt;a href=&#34;https://sillysky.net/docs/nyssr/configuration/cstringproperties/&#34;&gt;CStringProperties&lt;/a&gt; aProperties) throws Exception;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>IServiceStarter</title>
      <link>https://sillysky.net/docs/nyssr/services/iservicestarter/</link>
      <pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://sillysky.net/docs/nyssr/services/iservicestarter/</guid>
      <description>&lt;p&gt;The IServiceStarter interface is used to define a starting point for the&#xA;classes in a Java package. In addition, the class that implements this&#xA;interface is usually the only class in a package that is not package private.&#xA;This means that all other classes are hidden in the package.&lt;/p&gt;&#xA;&lt;p&gt;The interface is registered to the &lt;a href=&#34;https://sillysky.net/docs/nyssr/services/serviceregistry/&#34;&gt;service registry&lt;/a&gt; as a starter.&#xA;It defines a list of dependencies that the classes in the package have. If the&#xA;dependencies are fulfilled, that means if all required interfaces have been&#xA;started in the service registry, then this package will also be started.&#xA;Conversely, the package will be stopped should a required service be stopped&#xA;in the registry.&lt;/p&gt;</description>
    </item>
    <item>
      <title>List of wellknown services</title>
      <link>https://sillysky.net/docs/nyssr/services/list-of-wellknown-services/</link>
      <pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://sillysky.net/docs/nyssr/services/list-of-wellknown-services/</guid>
      <description>&lt;p&gt;This list briefly describes various services that are registered at the&#xA;service registry.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Class&lt;/th&gt;&#xA;          &lt;th&gt;Module/Plugin&lt;/th&gt;&#xA;          &lt;th&gt;Properties&lt;/th&gt;&#xA;          &lt;th&gt;Description&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/microservices/ihelperforlocalmicroservices/&#34;&gt;IHelperForLocalMicroServices&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;NY_MicroServicePlugIn&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The service simplifies the registration and de-registration of microservices.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/configuration/ikernelconfiguration/&#34;&gt;IKernelConfiguration&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A service to access the configuration.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/logging/imessageloggerfactory/&#34;&gt;IMessageLoggerFactory&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A factory for creating &lt;a href=&#34;https://sillysky.net/docs/nyssr/logging/imessageloggerfactory/imessagelogger/&#34;&gt;message loggers&lt;/a&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/messages/imessagesender/&#34;&gt;IMessageSender&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The service that sends messages.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/microservices/imicroserviceregistrycollector/&#34;&gt;IMicroServiceRegistryCollector&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;NY_MicroServicePlugIn&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;This service collects broadcasts from microservice registries and facilitates sending messages to microservices.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/logging/inamedb/&#34;&gt;INameDb&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A database where names for record IDs, targets, etc. can be stored. These names are then output in addition to the abstract IDs in the LOG, which makes the LOG much more readable.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/namespaces/inamespace/&#34;&gt;INamespace&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;nid=NamespaceID&lt;/td&gt;&#xA;          &lt;td&gt;Namespaces are very important parts of the architecture of a nyssr.net node. They host the threads and targets and a nano service registry.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/namespaces/inamespacefactory/&#34;&gt;INamespaceFactory&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A factory for creating namespaces.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/namespaces/inamespaceregistry/&#34;&gt;INamespaceRegistry&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A registry where all namespaces are registered.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/namespaces/nanoservices/inanoserviceregistry/&#34;&gt;INanoServiceRegistry&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;nid=NamespaceID&lt;/td&gt;&#xA;          &lt;td&gt;Nano service registries always belong to a namespace. This is where nano services are registered.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/other-interfaces/irecordhelper/&#34;&gt;IRecordHelper&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A service to register nano services and observers.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/other-interfaces/irecordregistryhelper/&#34;&gt;IRecordRegistryHelper&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A service to register records and nano services.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/other-interfaces/ishutdown/&#34;&gt;IShutDown&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A service to shut down the node.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/messages/crecord/cslotfactory/&#34;&gt;ISlotFactory&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A factory for creating record slots.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/namespaces/targets/itargetregistry/&#34;&gt;ITargetRegistry&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;nid=NamespaceID&lt;/td&gt;&#xA;          &lt;td&gt;Target registries always belong to a namespace. This is where targets are registered.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://sillysky.net/docs/nyssr/timer/itimermanager/&#34;&gt;ITimerManager&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Kernel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;A service for the creation of timers.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
    </item>
  </channel>
</rss>
