libasynql  3.2.0
Asynchronous MySQL access library for PocketMine plugins.
QuerySendQueue.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * libasynql
5  *
6  * Copyright (C) 2018 SOFe
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20 
21 declare(strict_types=1);
22 
23 namespace poggit\libasynql\base;
24 
25 use Threaded;
26 use function is_string;
27 use function serialize;
28 use function unserialize;
29 
30 class QuerySendQueue extends Threaded{
31  public function scheduleQuery(int $queryId, int $mode, string $query, array $params) : void{
32  $this[] = serialize([$queryId, $mode, $query, $params]);
33  }
34 
35  public function fetchQuery(&$queryId, &$mode, &$query, &$params) : bool{
36  $row = $this->shift();
37  if(is_string($row)){
38  [$queryId, $mode, $query, $params] = unserialize($row, ["allowed_classes" => true]);
39  return true;
40  }
41  return false;
42  }
43 }
scheduleQuery(int $queryId, int $mode, string $query, array $params)
fetchQuery(&$queryId, &$mode, &$query, &$params)