]> git.mxchange.org Git - hub.git/commitdiff
New factory method createPackageInstance introduced to ease creating a singleton...
authorRoland Häder <roland@mxchange.org>
Sat, 27 Mar 2010 03:23:56 +0000 (03:23 +0000)
committerRoland Häder <roland@mxchange.org>
Sat, 27 Mar 2010 03:23:56 +0000 (03:23 +0000)
application/hub/main/helper/hub/announcement/class_HubDescriptorHelper.php
application/hub/main/nodes/class_BaseHubNode.php

index ea2253336519a32acedd9ca92f5e8f539e1771b3..83b13ad6c88b270887a671d4c8eac059590f6396 100644 (file)
@@ -96,35 +96,17 @@ class HubDescriptorHelper extends BaseHubHelper {
         * @return      void
         */
        public function publishAnnouncementDescriptor () {
-               // Is the node in the approx state? (active)
+               // Sanity check: Is the node in the approx. state? (active)
                $this->getNodeInstance()->getStateInstance()->validateNodeStateIsActive();
 
                // Compile the template, this inserts the loaded node data into the gaps.
                $this->getTemplateInstance()->compileTemplate();
 
-               // Prepare the compressor for our package, GZIP should be fine but we
-               // keep it open here so you can experiment with the settings and don't
-               // need to touch any code.
-               $compressorInstance = ObjectFactory::createObjectByConfiguredName('raw_package_compressor_class');
-
-               // Prepare the decorator compressor (for later flawless and easy updates)
-               $compressorInstance = ObjectFactory::createObjectByConfiguredName('deco_package_compressor_class', array($compressorInstance));
-
-               // Do we have an instance in the registry?
-               if (Registry::getRegistry()->instanceExists('network_package')) {
-                       // Then use this instance
-                       $packageInstance = Registry::getRegistry()->getInstance('network_package');
-               } else {
-                       // Now prepare the network package for delivery so only need to do this
-                       // once just before the "big announcement loop".
-                       $packageInstance = ObjectFactory::createObjectByConfiguredName('network_package_class', array($compressorInstance));
-               }
+               // Get a package instance
+               $packageInstance = $this->getNodeInstance()->createPackageInstance();
 
                // Next, feed the content in. The network package class is a pipe-through class.
                $packageInstance->enqueueRawDataFromTemplate($this);
-
-               // Set the instance in registry for further use
-               Registry::getRegistry()->addInstance('network_package', $packageInstance);
        }
 }
 
index f9d1cdf9c6425fe44b6d21b902650faf98457242..5cbe9033932da030ed312af67a24d7526613703f 100644 (file)
@@ -614,6 +614,42 @@ class BaseHubNode extends BaseHubSystem implements Updateable {
                // Return value
                return $isActive;
        }
+
+       /**
+        * Returns a singleton network package instance. If an instance is found in
+        * the registry it will be returned, else a new instance is created and
+        * stored in the same registry entry.
+        *
+        * @param       $compressorInstance             A Compressor instance
+        * @return      $packageInstance        A network package instance
+        */
+       public function createPackageInstance (Compressor $compressorInstance) {
+               // Do we have an instance in the registry?
+               if (Registry::getRegistry()->instanceExists('network_package')) {
+                       // Then use this instance
+                       $packageInstance = Registry::getRegistry()->getInstance('network_package');
+               } else {
+                       /**
+                        * Prepare the compressor for our package, GZIP should be fine but we
+                        * keep it open here so you can experiment with the settings and don't
+                        * need to touch any code.
+                        */
+                       $compressorInstance = ObjectFactory::createObjectByConfiguredName('raw_package_compressor_class');
+
+                       // Prepare the decorator compressor (for later flawless and easy updates)
+                       $compressorInstance = ObjectFactory::createObjectByConfiguredName('deco_package_compressor_class', array($compressorInstance));
+
+                       // Now prepare the network package for delivery so only need to do this
+                       // once just before the "big announcement loop".
+                       $packageInstance = ObjectFactory::createObjectByConfiguredName('network_package_class', array($compressorInstance));
+
+                       // Set the instance in registry for further use
+                       Registry::getRegistry()->addInstance('network_package', $packageInstance);
+               }
+
+               // Return the instance
+               return $packageInstance;
+       }
 }
 
 // [EOF]