File manager - Edit - /home/autoph/public_html/projects/aha-api/vendor/google/protobuf/src/Google/Protobuf/Internal/AnyBase.php
Back
<?php namespace Google\Protobuf\Internal; /** * Base class for Google\Protobuf\Any, this contains hand-written convenience * methods like pack() and unpack(). */ class AnyBase extends \Google\Protobuf\Internal\Message { const TYPE_URL_PREFIX = 'type.googleapis.com/'; /** * This method will try to resolve the type_url in Any message to get the * targeted message type. If failed, an error will be thrown. Otherwise, * the method will create a message of the targeted type and fill it with * the decoded value in Any. * @return Message unpacked message * @throws \Exception Type url needs to be type.googleapis.com/fully-qualified. * @throws \Exception Class hasn't been added to descriptor pool. * @throws \Exception cannot decode data in value field. */ public function unpack() { // Get fully qualified name from type url. $url_prifix_len = strlen(GPBUtil::TYPE_URL_PREFIX); if (substr($this->type_url, 0, $url_prifix_len) != GPBUtil::TYPE_URL_PREFIX) { throw new \Exception( "Type url needs to be type.googleapis.com/fully-qulified"); } $fully_qualified_name = substr($this->type_url, $url_prifix_len); // Create message according to fully qualified name. $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); $desc = $pool->getDescriptorByProtoName($fully_qualified_name); if (is_null($desc)) { throw new \Exception("Class ".$fully_qualified_name ." hasn't been added to descriptor pool"); } $klass = $desc->getClass(); $msg = new $klass(); // Merge data into message. $msg->mergeFromString($this->value); return $msg; } /** * The type_url will be created according to the given message’s type and * the value is encoded data from the given message.. * @param Message $msg A proto message. */ public function pack($msg) { if (!$msg instanceof Message) { trigger_error("Given parameter is not a message instance.", E_USER_ERROR); return; } // Set value using serialized message. $this->value = $msg->serializeToString(); // Set type url. $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); $desc = $pool->getDescriptorByClassName(get_class($msg)); $fully_qualified_name = $desc->getFullName(); $this->type_url = GPBUtil::TYPE_URL_PREFIX . $fully_qualified_name; } /** * This method returns whether the type_url in any_message is corresponded * to the given class. * @param string $klass The fully qualified PHP class name of a proto message type. */ public function is($klass) { $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); $desc = $pool->getDescriptorByClassName($klass); $fully_qualified_name = $desc->getFullName(); $type_url = GPBUtil::TYPE_URL_PREFIX . $fully_qualified_name; return $this->type_url === $type_url; } }
| ver. 1.4 |
.
| PHP 8.1.32 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings