*/
private $visitorInstance = NULL;
+ /**
+ * DHT instance
+ */
+ private $dhtInstance = NULL;
+
/**
* An instance of a database wrapper class
*/
/**
* Socket resource
*/
- private $socketResource = false;
+ private $socketResource = FALSE;
/**
* Package data
*/
private $packageData = array();
+ /**
+ * Generic array
+ */
+ private $genericArray = array();
+
/***********************
* Exception codes.... *
***********************/
* @return void
*/
public static final function __callStatic ($methodName, $args) {
- // Implode all given arguments
+ // Init argument string
$argsString = '';
+
+ // Is it empty or an array?
if (empty($args)) {
// No arguments
$argsString = 'NULL';
} elseif (is_array($arg)) {
// .. or size if array
$argsString .= ', ' . count($arg);
- } elseif ($arg === true) {
+ } elseif ($arg === TRUE) {
// ... is boolean 'true'
$argsString .= ', true';
- } elseif ($arg === false) {
+ } elseif ($arg === FALSE) {
// ... is boolean 'true'
$argsString .= ', false';
}
* @param $fileIoInstance An instance to the file I/O sub-system
* @return void
*/
- public final function setFileIoInstance (FileIoHandler $fileIoInstance) {
+ public final function setFileIoInstance (IoHandler $fileIoInstance) {
$this->fileIoInstance = $fileIoInstance;
}
}
/**
- * Setter for BaseDatabaseWrapper instance
+ * Setter for DatabaseWrapper instance
*
- * @param $wrapperInstance An instance of an BaseDatabaseWrapper
+ * @param $wrapperInstance An instance of an DatabaseWrapper
* @return void
*/
- public final function setWrapperInstance (BaseDatabaseWrapper $wrapperInstance) {
+ public final function setWrapperInstance (DatabaseWrapper $wrapperInstance) {
$this->wrapperInstance = $wrapperInstance;
}
/**
- * Getter for BaseDatabaseWrapper instance
+ * Getter for DatabaseWrapper instance
*
- * @return $wrapperInstance An instance of an BaseDatabaseWrapper
+ * @return $wrapperInstance An instance of an DatabaseWrapper
*/
public final function getWrapperInstance () {
return $this->wrapperInstance;
return $this->visitorInstance;
}
+ /**
+ * Setter for DHT instance
+ *
+ * @param $dhtInstance A Distributable instance
+ * @return void
+ */
+ protected final function setDhtInstance (Distributable $dhtInstance) {
+ $this->dhtInstance = $dhtInstance;
+ }
+
+ /**
+ * Getter for DHT instance
+ *
+ * @return $dhtInstance A Distributable instance
+ */
+ protected final function getDhtInstance () {
+ return $this->dhtInstance;
+ }
+
/**
* Setter for raw package Data
*
* @param $doExit Whether exit the program (true is default)
* @return void
*/
- public function debugBackTrace ($message = '', $doExit = true) {
+ public function debugBackTrace ($message = '', $doExit = TRUE) {
// Sorry, there is no other way getting this nice backtrace
if (!empty($message)) {
// Output message
print('</pre>');
// Exit program?
- if ($doExit === true) {
+ if ($doExit === TRUE) {
exit();
} // END - if
}
* @paran $stripTags Whether to strip tags (default: false)
* @return void
*/
- public function debugOutput ($message, $doPrint = true, $stripTags = false) {
+ public function debugOutput ($message, $doPrint = TRUE, $stripTags = FALSE) {
// Set debug instance to NULL
$debugInstance = NULL;
// Use debug output handler
$debugInstance->output($message, $stripTags);
- if ($doPrint === false) {
+ if ($doPrint === FALSE) {
// Die here if not printed
exit();
} // END - if
} // END - if
// Put directly out
- if ($doPrint === true) {
+ if ($doPrint === TRUE) {
// Print message
print($message . chr(10));
} else {
$this->getResultInstance()->rewind();
// Do we have an entry?
- if ($this->getResultInstance()->valid() === false) {
+ if ($this->getResultInstance()->valid() === FALSE) {
throw new InvalidDatabaseResultException(array($this, $this->getResultInstance()), DatabaseResult::EXCEPTION_INVALID_DATABASE_RESULT);
} // END - if
*/
public function idle ($milliSeconds) {
// Sleep is fine by default
- $hasSlept = true;
+ $hasSlept = TRUE;
// Idle so long with found function
if (function_exists('time_sleep_until')) {
}
/**
- * Converts even very large decimal numbers, also with negative sign, to a
- * hexadecimal string.
+ * Converts even very large decimal numbers, also signed, to a hexadecimal
+ * string.
*
* This work is based on comment #97756 on php.net documentation page at:
* <http://de.php.net/manual/en/function.hexdec.php#97756>
// Encode the decimal number into a hexadecimal string
$hex = '';
do {
- $hex = self::$dechex[($dec % 16)] . $hex;
- $dec /= 16;
+ $hex = self::$dechex[($dec % (2 ^ 4))] . $hex;
+ $dec /= (2 ^ 4);
} while ($dec >= 1);
/*
- * We need hexadecimal strings with leading zeros if the length cannot
- * be divided by 2
+ * Leading zeros are required for hex-decimal "numbers". In some
+ * situations more leading zeros are wanted, so check for both
+ * conditions.
*/
if ($maxLength > 0) {
// Prepend more zeros
- $hex = $this->prependStringToString($hex, '0', $maxLength);
+ $hex = str_pad($hex, $maxLength, '0', STR_PAD_LEFT);
} elseif ((strlen($hex) % 2) != 0) {
+ // Only make string's length dividable by 2
$hex = '0' . $hex;
}
return $asc;
}
- /**
- * Prepends a given string $prepend to $str with a given total length
- *
- * @param $str Given original string which should be prepended
- * @param $prepend The string to prepend
- * @param $length Total length of the final string
- * @return $strFinal Final prepended string
- */
- protected function prependStringToString ($str, $prepend, $length) {
- // Set final string to original string by default
- $strFinal = $str;
-
- // Can it devided
- if (strlen($str) < $length) {
- // Difference between total length and length of original string
- $diff = $length - strlen($str);
-
- // Prepend the string
- $prepend = str_repeat($prepend, ($diff / strlen($prepend) + 1));
-
- // Make sure it will definedly fit
- assert(strlen($prepend) >= $diff);
-
- // Cut it a little down
- $prepend = substr($prepend, 0, $diff);
- //* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('prepend('.strlen($prepend).')='.$prepend.',diff='.$diff.',length='.$length);
-
- // Construct the final prepended string
- $strFinal = $prepend . $str;
- } // END - if
-
- // Return it
- return $strFinal;
- }
-
/**
* Checks whether the given encoded data was encoded with Base64
*
*/
protected function isBase64Encoded ($encodedData) {
// Determine it
- $isBase64 = (@base64_decode($encodedData, true) !== false);
+ $isBase64 = (@base64_decode($encodedData, true) !== FALSE);
// Return it
return $isBase64;
* @param $assertMismatch Whether to assert mismatches
* @return $ret The (hopefully) secured numbered value
*/
- public function bigintval ($num, $castValue = true, $assertMismatch = false) {
+ public function bigintval ($num, $castValue = TRUE, $assertMismatch = FALSE) {
// Filter all numbers out
$ret = preg_replace('/[^0123456789]/', '', $num);
// Shall we cast?
- if ($castValue === true) {
+ if ($castValue === TRUE) {
// Cast to biggest numeric type
$ret = (double) $ret;
} // END - if
// Assert only if requested
- if ($assertMismatch === true) {
+ if ($assertMismatch === TRUE) {
// Has the whole value changed?
assert(('' . $ret . '' != '' . $num . '') && (!is_null($num)));
} // END - if
* @param $assertMismatch Whether to assert mismatches
* @return $ret The (hopefully) secured hext-numbered value
*/
- public function hexval ($num, $assertMismatch = false) {
+ public function hexval ($num, $assertMismatch = FALSE) {
// Filter all numbers out
$ret = preg_replace('/[^0123456789abcdefABCDEF]/', '', $num);
// Assert only if requested
- if ($assertMismatch === true) {
+ if ($assertMismatch === TRUE) {
// Has the whole value changed?
assert(('' . $ret . '' != '' . $num . '') && (!is_null($num)));
} // END - if
// Return result
return $ret;
}
+
+ /**
+ * Checks whether start/end marker are set
+ *
+ * @param $data Data to be checked
+ * @return $isset Whether start/end marker are set
+ */
+ public final function ifStartEndMarkersSet ($data) {
+ // Determine it
+ $isset = ((substr($data, 0, strlen(BaseRawDataHandler::STREAM_START_MARKER)) == BaseRawDataHandler::STREAM_START_MARKER) && (substr($data, -1 * strlen(BaseRawDataHandler::STREAM_END_MARKER), strlen(BaseRawDataHandler::STREAM_END_MARKER)) == BaseRawDataHandler::STREAM_END_MARKER));
+
+ // ... and return it
+ return $isset;
+ }
+
+ /**
+ * Determines if a key is set in the generic array
+ *
+ * @param $keyGroup Main group for the key
+ * @param $subGroup Sub group for the key
+ * @param $key Key to check
+ * @return $isset Whether the given key is set
+ */
+ protected final function isGenericArrayKeySet ($keyGroup, $subGroup, $key) {
+ // Is it there?
+ $isset = isset($this->genericArray[$keyGroup][$subGroup][$key]);
+
+ // Return it
+ return $isset;
+ }
+
+ /**
+ * Determines if an element is set in the generic array
+ *
+ * @param $keyGroup Main group for the key
+ * @param $subGroup Sub group for the key
+ * @param $key Key to check
+ * @param $element Element to check
+ * @return $isset Whether the given key is set
+ */
+ protected final function isGenericArrayElementSet ($keyGroup, $subGroup, $key, $element) {
+ // Is it there?
+ $isset = isset($this->genericArray[$keyGroup][$subGroup][$key][$element]);
+
+ // Return it
+ return $isset;
+ }
+
+ /**
+ * Determines if a group is set in the generic array
+ *
+ * @param $keyGroup Main group
+ * @param $subGroup Sub group
+ * @return $isset Whether the given group is set
+ */
+ protected final function isGenericArrayGroupSet ($keyGroup, $subGroup) {
+ // Is it there?
+ $isset = isset($this->genericArray[$keyGroup][$subGroup]);
+
+ // Return it
+ return $isset;
+ }
+
+ /**
+ * Getter for sub key group
+ *
+ * @param $keyGroup Main key group
+ * @param $subGroup Sub key group
+ * @return $array An array with all array elements
+ */
+ protected final function getGenericSubArray ($keyGroup, $subGroup) {
+ // Is it there?
+ if (!$this->isGenericArrayGroupSet($keyGroup, $subGroup)) {
+ // No, then abort here
+ trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ' not found.');
+ } // END - if
+
+ // Return it
+ return $this->genericArray[$keyGroup][$subGroup];
+ }
+
+ /**
+ * Unsets a given key in generic array
+ *
+ * @param $keyGroup Main group for the key
+ * @param $subGroup Sub group for the key
+ * @param $key Key to unset
+ * @return void
+ */
+ protected final function unsetGenericArrayElement ($keyGroup, $subGroup, $key) {
+ // Remove it
+ unset($this->genericArray[$keyGroup][$subGroup][$key]);
+ }
+
+ /**
+ * Append a string to a given generic array key
+ *
+ * @param $keyGroup Main group for the key
+ * @param $subGroup Sub group for the key
+ * @param $key Key to unset
+ * @param $value Value to add/append
+ * @return void
+ */
+ protected final function appendStringToGenericArrayElement ($keyGroup, $subGroup, $key, $value, $appendGlue = '') {
+ // Is it already there?
+ if ($this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
+ // Append it
+ $this->genericArray[$keyGroup][$subGroup][$key] .= $appendGlue . (string) $value;
+ } else {
+ // Add it
+ $this->genericArray[$keyGroup][$subGroup][$key] = (string) $value;
+ }
+ }
+
+ /**
+ * Pushes an element to a generic key
+ *
+ * @param $keyGroup Main group for the key
+ * @param $subGroup Sub group for the key
+ * @param $key Key to use
+ * @param $value Value to add/append
+ * @return $count Number of array elements
+ */
+ protected final function pushValueToGenericArrayElement ($keyGroup, $subGroup, $key, $value) {
+ // Is it set?
+ if (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
+ // Initialize array
+ $this->genericArray[$keyGroup][$subGroup][$key] = array();
+ } // END - if
+
+ // Then push it
+ $count = array_push($this->genericArray[$keyGroup][$subGroup][$key], $value);
+
+ // Return count
+ return $count;
+ }
+
+ /**
+ * Sets a value in given generic array key/element
+ *
+ * @param $keyGroup Main group for the key
+ * @param $subGroup Sub group for the key
+ * @param $key Key to set
+ * @param $element Element to set
+ * @param $value Value to set
+ * @return void
+ */
+ protected final function setGenericArrayElement ($keyGroup, $subGroup, $key, $element, $value) {
+ // Then set it
+ $this->genericArray[$keyGroup][$subGroup][$key][$element] = $value;
+ }
+
+ /**
+ * Pops an element from a generic group
+ *
+ * @param $keyGroup Main group for the key
+ * @param $subGroup Sub group for the key
+ * @param $key Key to unset
+ * @return $value Last "popped" value
+ */
+ protected final function popGenericArrayElement ($keyGroup, $subGroup, $key) {
+ // Is it set?
+ if (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
+ // Not found
+ trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ' not found.');
+ } // END - if
+
+ // Then "pop" it
+ $value = array_pop($this->genericArray[$keyGroup][$subGroup][$key]);
+
+ // Return value
+ return $value;
+ }
+
+ /**
+ * Shifts an element from a generic group
+ *
+ * @param $keyGroup Main group for the key
+ * @param $subGroup Sub group for the key
+ * @param $key Key to unset
+ * @return $value Last "popped" value
+ */
+ protected final function shiftGenericArrayElement ($keyGroup, $subGroup, $key) {
+ // Is it set?
+ if (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
+ // Not found
+ trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ' not found.');
+ } // END - if
+
+ // Then "shift" it
+ $value = array_shift($this->genericArray[$keyGroup][$subGroup][$key]);
+
+ // Return value
+ return $value;
+ }
+
+ /**
+ * Count generic array group
+ *
+ * @param $keyGroup Main group for the key
+ * @return $count Count of given group
+ */
+ protected final function countGenericArray ($keyGroup) {
+ // Is it there?
+ if (!isset($this->genericArray[$keyGroup])) {
+ // Abort here
+ trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ' not found.');
+ } // END - if
+
+ // Then count it
+ $count = count($this->genericArray[$keyGroup]);
+
+ // Return it
+ return $count;
+ }
+
+ /**
+ * Count generic array sub group
+ *
+ * @param $keyGroup Main group for the key
+ * @param $subGroup Sub group for the key
+ * @return $count Count of given group
+ */
+ protected final function countGenericArrayGroup ($keyGroup, $subGroup) {
+ // Is it there?
+ if (!$this->isGenericArrayGroupSet($keyGroup, $subGroup)) {
+ // Abort here
+ trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ' not found.');
+ } // END - if
+
+ // Then count it
+ $count = count($this->genericArray[$keyGroup][$subGroup]);
+
+ // Return it
+ return $count;
+ }
+
+ /**
+ * Count generic array elements
+ *
+ * @param $keyGroup Main group for the key
+ * @param $subGroup Sub group for the key
+ * @para $key Key to count
+ * @return $count Count of given key
+ */
+ protected final function countGenericArrayElements ($keyGroup, $subGroup, $key) {
+ // Is it there?
+ if (!$this->isGenericArrayKeySet($keyGroup, $subGroup)) {
+ // Abort here
+ trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ' not found.');
+ } elseif (!$this->isValidGenericArrayGroup($keyGroup, $subGroup)) {
+ // Not valid
+ trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ' is not an array.');
+ }
+
+ // Then count it
+ $count = count($this->genericArray[$keyGroup][$subGroup][$key]);
+
+ // Return it
+ return $count;
+ }
+
+ /**
+ * Getter for whole generic group array
+ *
+ * @param $keyGroup Key group to get
+ * @return $array Whole generic array group
+ */
+ protected final function getGenericArray ($keyGroup) {
+ // Is it there?
+ if (!isset($this->genericArray[$keyGroup])) {
+ // Then abort here
+ trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ' does not exist.');
+ } // END - if
+
+ // Return it
+ return $this->genericArray[$keyGroup];
+ }
+
+ /**
+ * Getter for generic array key
+ *
+ * @param $keyGroup Key group to get
+ * @param $subGroup Sub group for the key
+ * @param $key Key to unset
+ * @return $value Mixed value from generic array element
+ */
+ protected final function getGenericArrayKey ($keyGroup, $subGroup, $key) {
+ // Is it there?
+ if (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
+ // Then abort here
+ trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ' does not exist.');
+ } // END - if
+
+ // Return it
+ return $this->genericArray[$keyGroup][$subGroup][$key];
+ }
+
+ /**
+ * Getter for generic array element
+ *
+ * @param $keyGroup Key group to get
+ * @param $subGroup Sub group for the key
+ * @param $key Key to look for
+ * @param $element Element to look for
+ * @return $value Mixed value from generic array element
+ */
+ protected final function getGenericArrayElement ($keyGroup, $subGroup, $key, $element) {
+ // Is it there?
+ if (!$this->isGenericArrayElementSet($keyGroup, $subGroup, $key, $element)) {
+ // Then abort here
+ trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',element=' . $element . ' does not exist.');
+ } // END - if
+
+ // Return it
+ return $this->genericArray[$keyGroup][$subGroup][$key][$element];
+ }
+
+ /**
+ * Checks if a given sub group is valid (array)
+ *
+ * @param $keyGroup Key group to get
+ * @param $subGroup Sub group for the key
+ * @return $isValid Whether given sub group is valid
+ */
+ protected final function isValidGenericArrayGroup ($keyGroup, $subGroup) {
+ // Determine it
+ $isValid = (($this->isGenericArrayGroupSet($keyGroup, $subGroup)) && (is_array($this->getGenericSubArray($keyGroup, $subGroup))));
+
+ // Return it
+ return $isValid;
+ }
}
// [EOF]