| Conditions | 30 |
| Paths | 24 |
| Total Lines | 113 |
| Code Lines | 73 |
| Lines | 0 |
| Ratio | 0 % |
| Tests | 36 |
| CRAP Score | 123.799 |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 257 | 13 | protected function processBuffer() { |
|
| 258 | 13 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('ProtocolParser::processBuffer called') || true)); |
|
| 259 | |||
| 260 | 13 | if($this->buffer->getSize() < 4) { |
|
| 261 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Not enough data received for packet header ('.$this->buffer->getSize().')') || true)); |
||
| 262 | return; |
||
| 263 | } |
||
| 264 | |||
| 265 | 13 | $buffer = clone $this->buffer; |
|
| 266 | |||
| 267 | 13 | $length = $buffer->readInt3(); |
|
| 268 | 13 | $this->sequenceID = $buffer->readInt1(); |
|
| 269 | |||
| 270 | 13 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('First 10 bytes: '.implode(', ', unpack('C*', \substr($this->buffer->getContents(), 0, 10)))) || true)); |
|
| 271 | 13 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Read packet header length ('.$length.') and sequence ('.$this->sequenceID.')') || true)); |
|
| 272 | |||
| 273 | 13 | if($length === 0xFFFFFF) { |
|
| 274 | $this->buffer->read(($length + 4)); |
||
| 275 | $this->messageBuffer->append($buffer->read($length)); |
||
| 276 | |||
| 277 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('returned, 16mb packet received, waiting for the last one to arrive') || true)); |
||
| 278 | return; |
||
| 279 | 13 | } elseif($this->messageBuffer->getSize() > 0) { |
|
| 280 | $this->messageBuffer->append($buffer->read($length)); |
||
| 281 | $buffer = $this->messageBuffer; |
||
| 282 | $this->messageBuffer = new \Plasma\BinaryBuffer(); |
||
| 283 | } |
||
| 284 | |||
| 285 | 13 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('regular packet') || true)); |
|
| 286 | |||
| 287 | 13 | if($buffer->getSize() < $length) { |
|
| 288 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('returned, insufficent length: '.$buffer->getSize().', '.$length.' required') || true)); |
||
| 289 | return; |
||
| 290 | } |
||
| 291 | |||
| 292 | 13 | if($length > 0) { |
|
| 293 | 13 | $this->buffer->read(($length + 4)); |
|
| 294 | 13 | $buffer->slice(0, $length); |
|
| 295 | } else { |
||
| 296 | $this->buffer->slice($buffer->getSize()); |
||
| 297 | } |
||
| 298 | |||
| 299 | 13 | if($buffer->getSize() === 0) { |
|
| 300 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Buffer length is 0') || true)); |
||
| 301 | return; |
||
| 302 | } |
||
| 303 | |||
| 304 | /** @var \Plasma\Drivers\MySQL\Messages\MessageInterface $message */ |
||
| 305 | 13 | $message = null; |
|
| 306 | |||
| 307 | 13 | if($this->state === static::STATE_INIT) { |
|
| 308 | 13 | $message = new \Plasma\Drivers\MySQL\Messages\HandshakeMessage($this); |
|
| 309 | } else { |
||
| 310 | 11 | $firstChar = $buffer->read(1); |
|
| 311 | 11 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Received Message char "'.$firstChar.'" (0x'.\dechex(\ord($firstChar)).') - buffer length: '.$buffer->getSize()) || true)); |
|
| 312 | |||
| 313 | switch(true) { |
||
| 314 | 11 | case ($firstChar === \Plasma\Drivers\MySQL\Messages\ErrResponseMessage::getID()): |
|
|
1 ignored issue
–
show
|
|||
| 315 | 1 | $message = new \Plasma\Drivers\MySQL\Messages\ErrResponseMessage($this); |
|
| 316 | 1 | break; |
|
|
1 ignored issue
–
show
|
|||
| 317 | 10 | case ($firstChar === \Plasma\Drivers\MySQL\Messages\EOFMessage::getID() && $length < 6): |
|
|
1 ignored issue
–
show
|
|||
| 318 | $message = new \Plasma\Drivers\MySQL\Messages\EOFMessage($this); |
||
| 319 | break; |
||
|
1 ignored issue
–
show
|
|||
| 320 | 10 | case ($this->currentCommand instanceof \Plasma\Drivers\MySQL\Commands\PrepareCommand && $firstChar === "\x00"): |
|
|
1 ignored issue
–
show
|
|||
| 321 | $message = new \Plasma\Drivers\MySQL\Messages\PrepareStatementOkMessage($this); |
||
| 322 | break; |
||
|
1 ignored issue
–
show
|
|||
| 323 | 10 | case ($firstChar === "\x00"): |
|
|
1 ignored issue
–
show
|
|||
| 324 | 10 | $message = new \Plasma\Drivers\MySQL\Messages\OkResponseMessage($this); |
|
| 325 | 10 | break; |
|
|
1 ignored issue
–
show
|
|||
| 326 | default: |
||
|
1 ignored issue
–
show
|
|||
| 327 | $buffer->prepend($firstChar); |
||
| 328 | |||
| 329 | if($this->parseCallback !== null) { |
||
|
1 ignored issue
–
show
|
|||
| 330 | $parse = $this->parseCallback; |
||
| 331 | $this->parseCallback = null; |
||
| 332 | |||
| 333 | $caller = new \Plasma\Drivers\MySQL\ProtocolOnNextCaller($this, $buffer); |
||
| 334 | $parse($caller); |
||
| 335 | } else { |
||
| 336 | $caller = new \Plasma\Drivers\MySQL\ProtocolOnNextCaller($this, $buffer); |
||
| 337 | $this->currentCommand->onNext($caller); |
||
| 338 | } |
||
|
1 ignored issue
–
show
|
|||
| 339 | |||
| 340 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Left over buffer: '.$buffer->getSize()) || true)); |
||
| 341 | /*if($buffer->getSize() > 0) { |
||
| 342 | $this->buffer->prepend($buffer->getContents()); |
||
| 343 | }*/ |
||
| 344 | |||
| 345 | if($this->buffer->getSize() > 0) { |
||
|
1 ignored issue
–
show
|
|||
| 346 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Scheduling future read with '.$this->buffer->getSize().' bytes') || true)); |
||
| 347 | |||
| 348 | $this->driver->getLoop()->futureTick(function () { |
||
| 349 | $this->processBuffer(); |
||
| 350 | }); |
||
|
1 ignored issue
–
show
|
|||
| 351 | } |
||
|
1 ignored issue
–
show
|
|||
| 352 | |||
| 353 | return; |
||
| 354 | break; |
||
|
1 ignored issue
–
show
|
|||
| 355 | } |
||
| 356 | } |
||
| 357 | |||
| 358 | 13 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Received Message '.\get_class($message)) || true)); |
|
| 359 | |||
| 360 | 13 | $state = $message->setParserState(); |
|
| 361 | 13 | if($state !== -1) { |
|
| 362 | 13 | $this->state = $state; |
|
| 363 | } |
||
| 364 | |||
| 365 | 13 | if($message instanceof \Plasma\Drivers\MySQL\Messages\HandshakeMessage) { |
|
| 366 | 13 | $this->handshakeMessage = $message; |
|
| 367 | } |
||
| 368 | |||
| 369 | 13 | $this->handleMessage($buffer, $message); |
|
| 370 | 13 | } |
|
| 474 |