<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>More interfaces and classes on sillysky.net</title>
    <link>https://sillysky.net/docs/nyssr/other-interfaces/</link>
    <description>Recent content in More interfaces and classes on sillysky.net</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Tue, 09 Dec 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://sillysky.net/docs/nyssr/other-interfaces/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>IRecordRegistryHelper</title>
      <link>https://sillysky.net/docs/nyssr/other-interfaces/irecordregistryhelper/</link>
      <pubDate>Tue, 09 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://sillysky.net/docs/nyssr/other-interfaces/irecordregistryhelper/</guid>
      <description>&lt;p&gt;The &lt;strong&gt;Record Registry Helper&lt;/strong&gt; is a service for registering &lt;a href=&#34;https://sillysky.net/docs/nyssr/namespaces/nanoservices/&#34;&gt;nano services&lt;/a&gt; and &lt;a href=&#34;https://sillysky.net/docs/nyssr/messages/crecord/&#34;&gt;record&lt;/a&gt; names.&lt;/p&gt;&#xA;&lt;p&gt;In the record definition it is possible to specify whether the record belongs&#xA;to a nano service (of the same name). It is also possible to specify in which&#xA;&lt;a href=&#34;https://sillysky.net/docs/nyssr/namespaces/&#34;&gt;namespaces&lt;/a&gt; the nano service should be registered. The record&#xA;registry helper uses this information to register records as nano services.&lt;/p&gt;&#xA;&lt;pre class=&#34;ss-javacode&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{&#xA;  &#34;id&#34;: &#34;f2be95a8-50a5-4a42-a1f3-53eb3a02145d&#34;,&#xA;  &#34;name&#34;: &#34;NOTIFY_APP_INSTANCE_STARTED&#34;,&#xA;  &#34;isNanoService&#34;: &#34;true&#34;,&#xA;  &#34;namespaces&#34;: &#34;SYSTEM&#34;,&#xA;  &#34;description&#34;: &#34;Whenever an application instance has been started,\nthis notification service will be triggered.\nDirection: App Instance Registry --&gt; Public.&#34;,&#xA;  &#34;slots&#34;: [&#xA;    {&#xA;      &#34;key&#34;: &#34;1&#34;,&#xA;      &#34;name&#34;: &#34;INSTANCE&#34;,&#xA;      &#34;direction&#34;: &#34;REQUEST&#34;,&#xA;      &#34;presenceConstraint&#34;: &#34;MANDATORY&#34;,&#xA;      &#34;type&#34;: &#34;RECORD&#34;,&#xA;      &#34;description&#34;: &#34;The application instance record (see APP_INSTANCE).&#34;&#xA;    }&#xA;  ]&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&lt;p&gt;Additionally, record names are registered in the name database to find&#xA;readable names in the LOG instead of unreadable IDs (which are mostly UUIDs).&lt;/p&gt;</description>
    </item>
    <item>
      <title>CException</title>
      <link>https://sillysky.net/docs/nyssr/other-interfaces/cexception/</link>
      <pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://sillysky.net/docs/nyssr/other-interfaces/cexception/</guid>
      <description>&lt;p&gt;Instead of using Java-like many exception types, we decided to take a&#xA;different approach. We use a class &lt;code&gt;CException&lt;/code&gt;, which is based on the class&#xA;&lt;code&gt;java.lang.Exception&lt;/code&gt;. To differ between different exception types we use a&#xA;code and an optional text.&lt;/p&gt;&#xA;&lt;h2 id=&#34;constructors&#34;&gt;Constructors&lt;/h2&gt;&#xA;&lt;p&gt;The most used constructor is the one with an integer code:&lt;/p&gt;&#xA;&lt;pre class=&#34;ss-javacode&#34;&gt;&lt;code class=&#34;language-java&#34;&gt;public &lt;a href=&#34;https://sillysky.net/docs/nyssr/other-interfaces/cexception/&#34;&gt;CException&lt;/a&gt;(final int aCode);&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&lt;p&gt;Another constructor takes over an existing exception:&lt;/p&gt;&#xA;&lt;pre class=&#34;ss-javacode&#34;&gt;&lt;code class=&#34;language-java&#34;&gt;public &lt;a href=&#34;https://sillysky.net/docs/nyssr/other-interfaces/cexception/&#34;&gt;CException&lt;/a&gt;(final Throwable aException);&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&lt;p&gt;The transfer of a &lt;a href=&#34;https://sillysky.net/docs/nyssr/messages/cenvelope/cresult/&#34;&gt;message result&lt;/a&gt; is done like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>CResultCode</title>
      <link>https://sillysky.net/docs/nyssr/other-interfaces/cresultcode/</link>
      <pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://sillysky.net/docs/nyssr/other-interfaces/cresultcode/</guid>
      <description>&lt;p&gt;This class contains only result codes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CUtilPassword</title>
      <link>https://sillysky.net/docs/nyssr/other-interfaces/cutilpassword/</link>
      <pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://sillysky.net/docs/nyssr/other-interfaces/cutilpassword/</guid>
      <description>&lt;p&gt;This class is used to support password hashing.&lt;/p&gt;&#xA;&lt;p&gt;This method creates a SHA384 hash of the passed password. Then the hash is&#xA;encoded into a base64 string. A passing &lt;code&gt;null&lt;/code&gt; value generates a return value&#xA;of &lt;code&gt;null&lt;/code&gt; as well.&lt;/p&gt;&#xA;&lt;pre class=&#34;ss-javacode&#34;&gt;&lt;code class=&#34;language-java&#34;&gt;@Nullable&#xA;public static String hashPassword(final char[] aPassword);&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>IRecordHelper</title>
      <link>https://sillysky.net/docs/nyssr/other-interfaces/irecordhelper/</link>
      <pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://sillysky.net/docs/nyssr/other-interfaces/irecordhelper/</guid>
      <description>&lt;p&gt;Record Helper is a service for easier handling of &lt;a href=&#34;https://sillysky.net/docs/nyssr/messages/crecord/&#34;&gt;records&lt;/a&gt; and&#xA;&lt;a href=&#34;https://sillysky.net/docs/nyssr/namespaces/nanoservices/&#34;&gt;nano services&lt;/a&gt;. It provides methods for registering nano services&#xA;and observers, removing observers, and returns the namespace ID to which a&#xA;nano service belongs.&lt;/p&gt;&#xA;&lt;h2 id=&#34;getting-the-service&#34;&gt;Getting the service&lt;/h2&gt;&#xA;&lt;p&gt;The service is available through the local service registry.&lt;/p&gt;&#xA;&lt;pre class=&#34;ss-javacode&#34;&gt;&lt;code class=&#34;language-java&#34;&gt;final &lt;a href=&#34;https://sillysky.net/docs/nyssr/other-interfaces/irecordhelper/&#34;&gt;IRecordHelper&lt;/a&gt; helper = &lt;a href=&#34;https://sillysky.net/docs/nyssr/services/serviceregistry/&#34;&gt;CServiceRegistry&lt;/a&gt;.getInstance()&#xA;                                             .getService(&lt;a href=&#34;https://sillysky.net/docs/nyssr/other-interfaces/irecordhelper/&#34;&gt;IRecordHelper&lt;/a&gt;.class);&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&lt;p&gt;As always, make sure that the &lt;a href=&#34;https://sillysky.net/docs/nyssr/services/iservicestarter/&#34;&gt;service starter&lt;/a&gt; of your package has a&#xA;dependency on the helper service to ensure that the service already exists.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
