libasynql  3.2.0
Asynchronous MySQL access library for PocketMine plugins.
QueryRecvQueue.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 
27 use Threaded;
28 use function is_string;
29 use function serialize;
30 use function unserialize;
31 
32 class QueryRecvQueue extends Threaded{
33  public function publishResult(int $queryId, SqlResult $result) : void{
34  $this[] = serialize([$queryId, $result]);
35  }
36 
37  public function publishError(int $queryId, SqlError $error){
38  $this[] = serialize([$queryId, $error]);
39  }
40 
41  public function fetchResult(&$queryId, &$result) : bool{
42  $row = $this->shift();
43  if(is_string($row)){
44  [$queryId, $result] = unserialize($row, ["allowed_classes" => true]);
45  return true;
46  }
47  return false;
48  }
49 }
publishResult(int $queryId, SqlResult $result)
publishError(int $queryId, SqlError $error)