/** * @param integer $actualCode * @param string $respBody * * @return \Riak\Client\Core\Transport\RiakTransportException */ protected function createResponseException($actualCode, $respBody) { $exceptionCode = $actualCode; $exceptionMessage = "Unexpected protobuf response code: " . $actualCode; if ($actualCode === RiakMessageCodes::ERROR_RESP) { $errorClass = self::$respClassMap[$actualCode]; $errorMessage = Protobuf::decode($errorClass, (string) $respBody); if ($errorMessage->hasErrmsg()) { $exceptionMessage = $errorMessage->getErrmsg(); } if ($errorMessage->hasErrcode()) { $exceptionCode = $errorMessage->getErrcode(); } } return new RiakTransportException($exceptionMessage, $exceptionCode); }
function testMultiCodecMessageWithRepeatedFields() { $jsonCodec = new Codec\Json(); $repeated = Protobuf\Protobuf::decode(Repeated::class, $this->bin_repeated_nested); $json = $jsonCodec->encode($repeated); $repeated = $jsonCodec->decode(new Repeated(), $json); $bin = Protobuf\Protobuf::encode($repeated); $this->assertEquals($bin, $this->bin_repeated_nested); }
require dirname(__FILE__) . '/../conf/db.php'; require dirname(__FILE__) . '/../vendor/autoload.php'; require dirname(__FILE__) . '/../proto/ping.php'; require dirname(__FILE__) . '/../proto/pong.php'; $receive_len = 30; $udp_socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_bind($udp_socket, '0.0.0.0', 42001); $query_server_log = $db->prepare("\nSELECT\n server_log.server_id,\n server_log.nonce,\n server.session\nFROM\n server_log\nJOIN\n server\n ON\n server.id = server_log.server_id\nWHERE\n server_log.id = ?\nAND\n server_log.status = 'new'\n"); $query_update_server_log = $db->prepare("\nUPDATE\n server_log\nSET\n status = 'online',\n nonce = NULL,\n latency = 1000 * (NOW(6) - created),\n players = ?\nWHERE\n id = ?\n"); $query_update_server = $db->prepare("\nUPDATE\n server\nSET\n status = 'online',\n latency = (SELECT latency FROM server_log WHERE server_log.id = ?),\n players = ?,\n updated = NOW()\nWHERE\n id = ?\n"); print 'pongd started' . PHP_EOL; while (socket_recvfrom($udp_socket, $buf, $receive_len, 0, $ip, $port)) { print 'received ' . $receive_len . ' bytes from ' . $ip . PHP_EOL; if ('pong' === substr($buf, 0, 4)) { print 'looks like a pong' . PHP_EOL; $pong = \DrSlump\Protobuf\Protobuf::decode('Pong', substr($buf, 4)); $query_server_log->execute(array($pong->server_log_id)); if ($server_log = $query_server_log->fetch()) { print 'found server_log_id' . PHP_EOL; if ($pong->key === hash('sha1', $server_log->session . $server_log->nonce, true)) { print 'sha1 validated' . PHP_EOL; $query_update_server_log->execute(array($pong->player_count, $pong->server_log_id)); $query_update_server->execute(array($pong->server_log_id, $pong->player_count, $server_log->server_id)); print 'database updated' . PHP_EOL; } else { print 'invalid sha1!' . PHP_EOL; } } else { print 'invalid server_log_id!' . PHP_EOL; } }