]> git.mxchange.org Git - hub.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Sun, 26 Jan 2025 17:44:31 +0000 (18:44 +0100)
committerRoland Häder <roland@mxchange.org>
Sun, 26 Jan 2025 18:00:03 +0000 (19:00 +0100)
- private and final isn't needed
- added public method `generateListHashFromEntry (array $entry): string` to interface
- updated 'core' framework

13 files changed:
application/hub/classes/discovery/recipient/socket/class_PackageSocketDiscovery.php
application/hub/classes/factories/socket/class_SocketFactory.php
application/hub/classes/handler/raw_data/tcp/class_TcpRawDataHandler.php
application/hub/classes/handler/raw_data/udp/class_UdpRawDataHandler.php
application/hub/classes/listener/class_BaseListener.php
application/hub/classes/listener/socket/class_SocketFileListener.php
application/hub/classes/pools/class_BasePool.php
application/hub/classes/pools/peer/class_DefaultPeerPool.php
application/hub/classes/registry/socket/class_SocketRegistry.php
application/hub/classes/resolver/state/peer/class_PeerStateResolver.php
application/hub/interfaces/pool/class_Poolable.php
application/hub/traits/fragmenter/class_FragmentableTrait.php
core

index f62c0ca5ccbf3e215aea163343c22ee7ab6c7182..a48f8eb470ea3ceec44ee5b1ba9ae6292f78b75b 100644 (file)
@@ -234,8 +234,8 @@ class PackageSocketDiscovery extends BaseRecipientDiscovery implements Discovera
                }
 
                // And return it
-               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('PACKAGE-SOCKET-DISCOVERY: socketInstance=%s,socketInstance->socketResource=%s - EXIT!', $socketInstance->__toString(), $socketInstance->getSocketResource()));
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('PACKAGE-SOCKET-DISCOVERY: socketResource=' . $socketInstance->getSocketResource() . ',packageInstance=' . print_r($packageInstance, TRUE));
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('PACKAGE-SOCKET-DISCOVERY: socketInstance=%s,socketInstance->socketResource=%s - EXIT!', $socketInstance->__toString(), $socketInstance->getPrintableName()));
+               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('PACKAGE-SOCKET-DISCOVERY: socketResource=' . $socketInstance->getPrintableName() . ',packageInstance=' . print_r($packageInstance, TRUE));
                return $socketInstance;
        }
 
index 4e9ab32f75068d8351bc109e8149e7d812cd0d21..6fa1317e400946238bfb15d97cc78aa7399f6de9 100644 (file)
@@ -111,7 +111,7 @@ class SocketFactory extends BaseFactory {
                        $socketInstance = self::$socketRegistryInstance->getInstance($registryKey);
 
                        // Debug message
-                       /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('SOCKET-FACTORY: Using socketResource[%s]=%s from registry.', gettype($socketInstance->getSocketResource()), $socketInstance->getSocketResource()));
+                       /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('SOCKET-FACTORY: Using socketResource[%s]=%s from registry.', gettype($socketInstance->getSocketResource()), $socketInstance->getPrintableName()));
                } else {
                        // Invoke inner factory
                        $socketInstance = ObjectFactory::createObjectByConfiguredName(sprintf('%s_connection_helper_class', $protocolInstance->getProtocolName()), array($packageInstance));
@@ -454,7 +454,7 @@ class SocketFactory extends BaseFactory {
         */
        public static final function createNextAcceptedSocketFromPool (Poolable $poolInstance, StorableSocket $socketInstance) {
                // Invoke static initializer
-               /* NOISY-DEBUG */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('SOCKET-FACTORY: poolInstance=%s,socketInstance->socketResource=%s - CALLED!', $poolInstance->__toString(), $socketInstance->getSocketResource()));
+               /* NOISY-DEBUG */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('SOCKET-FACTORY: poolInstance=%s,socketInstance->socketResource=%s - CALLED!', $poolInstance->__toString(), $socketInstance->getPrintableName()));
                self::staticInitializer();
 
                // Get socket protocol
index eacfba8b3444d2b02159c52e89828581adb328a9..7725d92e7d3dd74c65fcf26e581a9db4926cf76a 100644 (file)
@@ -82,7 +82,7 @@ class TcpRawDataHandler extends BaseRawDataHandler implements Networkable {
                $this->setErrorCode(StorableSocket::SOCKET_ERROR_UNHANDLED);
 
                // Read the raw data from socket in a loop
-               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('TCP-RAW-DATA-HANDLER: Handling TCP package from socketResource=%s,last error=%s,socketType=%s', $socketInstance->getSocketResource(), $socketInstance->getLastSocketErrorMessage(), $socketInstance->getSocketType()));
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('TCP-RAW-DATA-HANDLER: Handling TCP package from socketResource=%s,last error=%s,socketType=%s', $socketInstance->getPrintableName(), $socketInstance->getLastSocketErrorMessage(), $socketInstance->getSocketType()));
                while ($rawData = $socketInstance->readDataFromSocket()) {
                        // Get socket error code back
                        /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('TCP-RAW-DATA-HANDLER: rawData(%d)[]=%s', strlen($rawData), gettype($rawData)));
@@ -96,7 +96,7 @@ class TcpRawDataHandler extends BaseRawDataHandler implements Networkable {
                                 * ignored on non-blocking sockets. The socket is currently not
                                 * sending any data.
                                 */
-                               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('TCP-RAW-DATA-HANDLER: Ignoring error 11 (Resource temporary unavailable) from socketResource=%s - CONTINUE!', $socketInstance->getSocketResource()));
+                               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('TCP-RAW-DATA-HANDLER: Ignoring error 11 (Resource temporary unavailable) from socketResource=%s - CONTINUE!', $socketInstance->getPrintableName()));
                                $socketInstance->clearLastSocketError();
 
                                // Is there anything to add to the stacker?
index 44b4942deca4f7cb049c1005da190197ae92c483..bba06b103fd7d4e612ba4dc4fdfb7b81241205e4 100644 (file)
@@ -72,7 +72,7 @@ class UdpRawDataHandler extends BaseRawDataHandler implements Networkable {
                $this->setErrorCode(StorableSocket::SOCKET_ERROR_UNHANDLED);
 
                // Debug message
-               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('UDP-HANDLER: Handling UDP package from socketResource=%s,last error=%s', $socketInstance->getSocketResource(), $socketInstance->getLastSocketErrorMessage()));
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('UDP-HANDLER: Handling UDP package from socketResource=%s,last error=%s', $socketInstance->getPrintableName(), $socketInstance->getLastSocketErrorMessage()));
                DebugMiddleware::getSelfInstance()->partialStub('Please rewrite this part.');
                return;
        }
index a1136abeb57433c819651635dada0a71429a6618..162818462253eb0acb3648d7a5b33de533a90b96 100644 (file)
@@ -232,7 +232,7 @@ abstract class BaseListener extends BaseHubSystem implements Visitable {
                /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('%s-LISTENER: socketInstance=%s - CALLED!', strtoupper($this->getProtocolName()), $socketInstance->__toString()));
                if ($this->isServerSocketRegistered($socketInstance)) {
                        // Already registered
-                       throw new SocketAlreadyRegisteredException(array($this, $socketInstance->getSocketResource()), self::EXCEPTION_SOCKET_ALREADY_REGISTERED);
+                       throw new SocketAlreadyRegisteredException([$this, $socketInstance->getSocketResource()], self::EXCEPTION_SOCKET_ALREADY_REGISTERED);
                }
 
                // Get a connection info instance
@@ -248,11 +248,11 @@ abstract class BaseListener extends BaseHubSystem implements Visitable {
                $infoInstance->fillWithListenerInformation($this);
 
                // Register the socket
-               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('%s-LISTENER: Registering socketInstance->socketResource=%s,socketType=%s ...', strtoupper($this->getProtocolName()), $socketInstance->getSocketResource(), $socketInstance->getSocketType()));
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('%s-LISTENER: Registering socketInstance->socketResource=%s,socketType=%s ...', strtoupper($this->getProtocolName()), $socketInstance->getPrintableName(), $socketInstance->getSocketType()));
                $this->getRegistryInstance()->registerSocketInstance($infoInstance, $socketInstance);
 
                // And set it here
-               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('%s-LISTENER: Setting socketInstance=%s (socketResource=%s) ...', strtoupper($this->getProtocolName()), $socketInstance->__toString(), $socketInstance->getSocketResource()));
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('%s-LISTENER: Setting socketInstance=%s (socketResource=%s) ...', strtoupper($this->getProtocolName()), $socketInstance->__toString(), $socketInstance->getPrintableName()));
                $this->setSocketInstance($socketInstance);
 
                // Trace message
@@ -282,7 +282,7 @@ abstract class BaseListener extends BaseHubSystem implements Visitable {
                $infoInstance->fillWithListenerInformation($this);
 
                // Check it
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('%s-LISTENER: Checking socketInstance ... (socketResource=%s)', strtoupper($this->getProtocolName()), $socketInstance->getSocketResource()));
+               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('%s-LISTENER: Checking socketInstance ... (socketResource=%s)', strtoupper($this->getProtocolName()), $socketInstance->getPrintableName()));
                $isRegistered = $this->getRegistryInstance()->isSocketRegistered($infoInstance, $socketInstance);
 
                // Return result
@@ -441,7 +441,7 @@ abstract class BaseListener extends BaseHubSystem implements Visitable {
                $socketInstance->setSenderPort($peerPort);
 
                // Register the socket with the registry and with the faked array
-               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('%s-LISTENER: Registering socketInstance->socketResource=%s,socketType=%s ...', strtoupper($this->getProtocolName()), $socketInstance->getSocketResource(), $socketInstance->getSocketType()));
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugMessage(sprintf('%s-LISTENER: Registering socketInstance->socketResource=%s,socketType=%s ...', strtoupper($this->getProtocolName()), $socketInstance->getPrintableName(), $socketInstance->getSocketType()));
                $this->getRegistryInstance()->registerSocketInstance($infoInstance, $socketInstance);
 
                // Invoke private method
index 130b8a2ba77041533211176850296e001fdcc161..dc53916525d368c0601b743d8f6af11d799d8345 100644 (file)
@@ -100,7 +100,7 @@ class SocketFileListener extends BaseListener implements Listenable {
                $this->setHandlerInstance($handlerInstance);
 
                // Output message
-               self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('SOCKET-FILE-LISTENER: Socket listener now ready on socket ' . $socketInstance->getSocketResource() . ' for service.');
+               self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('SOCKET-FILE-LISTENER: Socket listener now ready on socket ' . $socketInstance->getPrintableName() . ' for service.');
        }
 
        /**
index 59eaa48dd15f58d312fe39fcbc2b9c2fb31fdbef..72558c065e1e277909fe621c9df8dc8bedcbcee6 100644 (file)
@@ -14,6 +14,9 @@ use Org\Mxchange\CoreFramework\Registry\Object\ObjectRegistry;
 use Org\Mxchange\CoreFramework\Visitor\Visitable;
 use Org\Mxchange\CoreFramework\Visitor\Visitor;
 
+// Import SPL stuff
+use \Iterator;
+
 /**
  * A general pool class
  *
@@ -70,7 +73,7 @@ abstract class BasePool extends BaseHubSystem implements Poolable, Visitable {
         * @param       $visitableInstance      An instance of a class that should bed added to the pool
         * @return      void
         */
-       protected final function addInstance ($group, $poolName, Visitable $visitableInstance) {
+       protected final function addInstance (string $group, string $poolName, Visitable $visitableInstance): void {
                // Debug message
                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('POOL: group=' . $group . ',poolName=' . $poolName . ',visitableInstance=' . $visitableInstance->__toString() . ' - CALLED!');
 
@@ -96,7 +99,7 @@ abstract class BasePool extends BaseHubSystem implements Poolable, Visitable {
         * @param       $poolEntry      The new pool entry that should be added
         * @return      void
         */
-       protected final function addPoolEntry ($poolEntry) {
+       protected final function addPoolEntry ($poolEntry): void {
                $this->getPoolEntriesInstance()->addEntry('pool', $poolEntry);
        }
 
@@ -106,7 +109,7 @@ abstract class BasePool extends BaseHubSystem implements Poolable, Visitable {
         * @param       $list   The list identifier we should return
         * @return      $array  The requested array
         */
-       public final function getArrayFromList (string $list) {
+       public final function getArrayFromList (string $list): array {
                // Get the array
                $array = $this->getPoolEntriesInstance()->getArrayFromList($list);
 
@@ -129,7 +132,7 @@ abstract class BasePool extends BaseHubSystem implements Poolable, Visitable {
         * @param       $visitorInstance        An instance of a Visitor class
         * @return      void
         */
-       public function accept (Visitor $visitorInstance) {
+       public function accept (Visitor $visitorInstance): void {
                // Debug message
                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('POOL: ' . $visitorInstance->__toString() . ' has visited - CALLED!');
 
@@ -182,7 +185,7 @@ abstract class BasePool extends BaseHubSystem implements Poolable, Visitable {
         *
         * @return      void
         */
-       public function preShutdown () {
+       public function preShutdown (): void {
                // Debug message
                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('POOL: Shutting down listener pool - CALLED!');
 
@@ -202,7 +205,7 @@ abstract class BasePool extends BaseHubSystem implements Poolable, Visitable {
         * @param       $poolType       Pool type (e.g. socket_listen)
         * @return      $iteratorInstance       An instance of a Iterator class
         */
-       public function createListIteratorInstance ($poolType) {
+       public function createListIteratorInstance (string $poolType): Iterator {
                // Create iterator instance
                $iteratorInstance = ObjectFactory::createObjectByConfiguredName($poolType . '_iterator_class', array($this->getPoolEntriesInstance()));
 
@@ -216,7 +219,7 @@ abstract class BasePool extends BaseHubSystem implements Poolable, Visitable {
         * @param       $entry  Array entry to be used
         * @return      $hash   Hash from it
         */
-       public function generateListHashFromEntry (array $entry) {
+       public function generateListHashFromEntry (array $entry): string {
                // Trace message
                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('POOL: entry()=%d - CALLED!', count($entry)));
 
@@ -229,7 +232,7 @@ abstract class BasePool extends BaseHubSystem implements Poolable, Visitable {
                // Is 'instance' and 'connection_type' set?
                if ((isset($entry[Poolable::SOCKET_ARRAY_INSTANCE])) && (isset($entry[Poolable::SOCKET_ARRAY_CONN_TYPE]))) {
                        // Get socket resource and type
-                       $hash = $entry[Poolable::SOCKET_ARRAY_INSTANCE]->getSocketResource() . ':' . $entry[Poolable::SOCKET_ARRAY_CONN_TYPE];
+                       $hash = $entry[Poolable::SOCKET_ARRAY_INSTANCE]->getPrintableName() . ':' . $entry[Poolable::SOCKET_ARRAY_CONN_TYPE];
                } else {
                        // Not supported
                        $this->debugInstance(sprintf('[%s:%d]: entry=%s is not supported.', __METHOD__, __LINE__, print_r($entry, TRUE)));
index bd2ccd5c9203d67f32b66ec13077b5f1cc40296f..c196735ca40b7dfc5e20abc1f700671a425f6671 100644 (file)
@@ -80,7 +80,7 @@ class DefaultPeerPool extends BasePool implements PoolablePeer {
         */
        private function validateSocket (StorableSocket $socketInstance) {
                // Is it a valid resource?
-               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('HUB-SYSTEM: socketInstance->socketResource=%s - CALLED!', $socketInstance->getSocketResource()));
+               //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('HUB-SYSTEM: socketInstance->socketResource=%s - CALLED!', $socketInstance->getPrintableName()));
                if (!$socketInstance->isValidSocket()) {
                        // Throw an exception
                        throw new InvalidSocketException([$this, $socketInstance->getSocketResource()], self::EXCEPTION_INVALID_SOCKET);
@@ -107,7 +107,7 @@ class DefaultPeerPool extends BasePool implements PoolablePeer {
         */
        public function addPeer (StorableSocket $socketInstance, string $connectionType) {
                // Validate parameter
-               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('DEFAULT-PEER-POOL: socketResource[%s]=%s,connectionType=%s - CALLED!', gettype($socketInstance->getSocketResource()), $socketInstance->getSocketResource(), $connectionType));
+               /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('DEFAULT-PEER-POOL: socketResource[%s]=%s,connectionType=%s - CALLED!', gettype($socketInstance->getSocketResource()), $socketInstance->getPrintableName(), $connectionType));
                if (empty($connectionType)) {
                        // Throw exception
                        throw new InvalidArgumentException('Parameter "connectionType" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
@@ -135,11 +135,11 @@ class DefaultPeerPool extends BasePool implements PoolablePeer {
                        }
                } else {
                        // Server sockets won't work with socket_getpeername()
-                       self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('DEFAULT-PEER-POOL: Socket resource is server socket (' . $socketInstance->getSocketResource() . '). This is not a bug.');
+                       self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('DEFAULT-PEER-POOL: Socket resource is server socket (' . $socketInstance->getPrintableName() . '). This is not a bug.');
                }
 
                // Construct the array
-               /* DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('DEFAULT-PEER-POOL: Adding peer ' . $peerAddress . ':' . $peerPort . ',socketResource=' . $socketInstance->getSocketResource() . ',connectionType=' . $connectionType);
+               /* DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('DEFAULT-PEER-POOL: Adding peer ' . $peerAddress . ':' . $peerPort . ',socketResource=' . $socketInstance->getPrintableName() . ',connectionType=' . $connectionType);
                $socketArray = [
                        Poolable::SOCKET_ARRAY_INSTANCE  => $socketInstance,
                        Poolable::SOCKET_ARRAY_CONN_TYPE => $connectionType
index 67f983896001dbe11314c8c1a2e1c8374ae9895d..d0bc80fb75d720820fdd2e04064336a9b696ee5f 100644 (file)
@@ -228,7 +228,7 @@ class SocketRegistry extends BaseRegistry implements Register, RegisterableSocke
                /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('SOCKET-REGISTRY: infoInstance->protocolName=%s,infoInstance->socketResource[%s]=%s - CALLED!', $infoInstance->getProtocolName(), gettype($socketInstance->getSocketResource()), $socketInstance->getPrintableName()));
                if ($this->isSocketRegistered($infoInstance, $socketInstance)) {
                        // Throw the exception
-                       throw new SocketAlreadyRegisteredException(array($infoInstance, $socketInstance->getSocketResource()), BaseListener::EXCEPTION_SOCKET_ALREADY_REGISTERED);
+                       throw new SocketAlreadyRegisteredException([$infoInstance, $socketInstance->getSocketResource()], BaseListener::EXCEPTION_SOCKET_ALREADY_REGISTERED);
                }
 
                // Create registry key
index 3c934065e90ee78a8342681796e91ab95bc123ae..8d392d3bac8a13848530d50ef78f9c0a8c788ab6 100644 (file)
@@ -88,7 +88,7 @@ class PeerStateResolver extends BaseStateResolver implements StateResolver {
                        // Still no socket resource?
                        if (!$socketInstance->isValidSocket()) {
                                // Then abort here with an exception (may happen after socket_shutdown())
-                               throw new InvalidSocketException(array($helperInstance, $socketInstance->getSocketResource()), self::EXCEPTION_INVALID_SOCKET);
+                               throw new InvalidSocketException([$helperInstance, $socketInstance->getSocketResource()], self::EXCEPTION_INVALID_SOCKET);
                        }
                }
 
index 5f5a17d0fea89b36af4a7975137cb5eb149fcfb3..b425ec629185ec4b97cfc82311729c647c9eab72 100644 (file)
@@ -5,6 +5,9 @@ namespace Org\Shipsimu\Hub\Pool;
 // Import application-specific stuff
 use Org\Shipsimu\Hub\Generic\HubInterface;
 
+// Import SPL stuff
+use \Iterator;
+
 /**
  * A Poolable interface
  *
@@ -38,7 +41,7 @@ interface Poolable extends HubInterface {
         * @param       $list   The list identifier we should return
         * @return      $array  The requested array
         */
-       function getArrayFromList (string $list);
+       function getArrayFromList (string $list): array;
 
        /**
         * Getter for pool entries instance
@@ -52,7 +55,7 @@ interface Poolable extends HubInterface {
         *
         * @return      void
         */
-       function preShutdown ();
+       function preShutdown (): void;
 
        /**
         * Creates an iterator from inner list instance.
@@ -60,6 +63,14 @@ interface Poolable extends HubInterface {
         * @param       $poolType       Pool type (e.g. 'socket_listen', 'network_listen')
         * @return      $iteratorInstance       An instance of a Iterator class
         */
-       function createListIteratorInstance (string $poolType);
+       function createListIteratorInstance (string $poolType): Iterator;
+
+       /**
+        * Creates a hash based on given entry
+        *
+        * @param       $entry  Array entry to be used
+        * @return      $hash   Hash from it
+        */
+       function generateListHashFromEntry (array $entry): string;
 
 }
index f9d7259c4a85de75aa98dd1a8019299ca232d61b..4f5241c2ca08229f5153cb8cbfb9b084b4d28d54 100644 (file)
@@ -39,7 +39,7 @@ trait FragmentableTrait {
         * @param       $fragmenterInstance             A Fragmentable instance
         * @return      void
         */
-       private final function setFragmenterInstance (Fragmentable $fragmenterInstance) {
+       private function setFragmenterInstance (Fragmentable $fragmenterInstance) {
                $this->fragmenterInstance = $fragmenterInstance;
        }
 
diff --git a/core b/core
index 76a44f7f1b907c63484c751f1fcf19730c553b7d..b0d8c80500e1b796f2398c44f20b36173bfc4d6c 160000 (submodule)
--- a/core
+++ b/core
@@ -1 +1 @@
-Subproject commit 76a44f7f1b907c63484c751f1fcf19730c553b7d
+Subproject commit b0d8c80500e1b796f2398c44f20b36173bfc4d6c