Conditions | 33 |
Paths | 32 |
Total Lines | 120 |
Code Lines | 79 |
Lines | 0 |
Ratio | 0 % |
Tests | 53 |
CRAP Score | 55.4016 |
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 |
||
264 | 16 | protected function processBuffer() { |
|
265 | 16 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('ProtocolParser::processBuffer called') || true)); |
|
266 | |||
267 | 16 | if($this->buffer->getSize() < 4) { |
|
268 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Not enough data received for packet header ('.$this->buffer->getSize().')') || true)); |
||
269 | return; |
||
270 | } |
||
271 | |||
272 | 16 | $buffer = clone $this->buffer; |
|
273 | |||
274 | 16 | $length = $buffer->readInt3(); |
|
275 | 16 | $this->sequenceID = $buffer->readInt1(); |
|
276 | |||
277 | 16 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('First 10 bytes: '.implode(', ', unpack('C*', \substr($this->buffer->getContents(), 0, 10)))) || true)); |
|
278 | 16 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Read packet header length ('.$length.') and sequence ('.$this->sequenceID.')') || true)); |
|
279 | |||
280 | 16 | if($length === 0xFFFFFF) { |
|
281 | $this->buffer->read(($length + 4)); |
||
282 | $this->messageBuffer->append($buffer->read($length)); |
||
283 | |||
284 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('returned, 16mb packet received, waiting for the last one to arrive') || true)); |
||
285 | return; |
||
286 | 16 | } elseif($this->messageBuffer->getSize() > 0) { |
|
287 | $this->messageBuffer->append($buffer->read($length)); |
||
288 | $buffer = $this->messageBuffer; |
||
289 | $this->messageBuffer = new \Plasma\BinaryBuffer(); |
||
290 | } |
||
291 | |||
292 | 16 | if($buffer->getSize() < $length) { |
|
293 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('returned, insufficent length: '.$buffer->getSize().', '.$length.' required') || true)); |
||
294 | return; |
||
295 | } |
||
296 | |||
297 | 16 | if($length > 0) { |
|
298 | 16 | $this->buffer->read(($length + 4)); |
|
299 | 16 | $buffer->slice(0, $length); |
|
300 | } else { |
||
301 | $this->buffer->slice($buffer->getSize()); |
||
302 | } |
||
303 | |||
304 | 16 | if($buffer->getSize() === 0) { |
|
305 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Buffer length is 0') || true)); |
||
306 | return; |
||
307 | } |
||
308 | |||
309 | /** @var \Plasma\Drivers\MySQL\Messages\MessageInterface $message */ |
||
310 | 16 | $message = null; |
|
311 | |||
312 | 16 | if($this->state === static::STATE_INIT) { |
|
313 | 16 | $message = new \Plasma\Drivers\MySQL\Messages\HandshakeMessage($this); |
|
314 | } else { |
||
315 | 14 | $firstChar = $buffer->read(1); |
|
316 | 14 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Received Message char "'.$firstChar.'" (0x'.\dechex(\ord($firstChar)).') - buffer length: '.$buffer->getSize()) || true)); |
|
317 | |||
318 | 14 | $okRespID = \Plasma\Drivers\MySQL\Messages\OkResponseMessage::getID(); |
|
319 | $isOkMessage = ( |
||
320 | ( |
||
321 | 14 | $firstChar === $okRespID || |
|
322 | ( |
||
323 | 6 | $firstChar === \Plasma\Drivers\MySQL\Messages\EOFMessage::getID() && |
|
324 | 14 | ($this->handshakeMessage->capability & \Plasma\Drivers\MySQL\CapabilityFlags::CLIENT_DEPRECATE_EOF) !== 0 |
|
325 | ) |
||
326 | ) && |
||
327 | 14 | !($this->currentCommand instanceof \Plasma\Drivers\MySQL\Commands\StatementExecuteCommand) |
|
328 | ); |
||
329 | |||
330 | switch(true) { |
||
331 | 14 | case ($firstChar === \Plasma\Drivers\MySQL\Messages\ErrResponseMessage::getID()): |
|
332 | 1 | $message = new \Plasma\Drivers\MySQL\Messages\ErrResponseMessage($this); |
|
333 | 1 | break; |
|
1 ignored issue
–
show
|
|||
334 | 13 | case ($this->currentCommand instanceof \Plasma\Drivers\MySQL\Commands\StatementPrepareCommand && $firstChar === $okRespID): |
|
1 ignored issue
–
show
|
|||
335 | 2 | $message = new \Plasma\Drivers\MySQL\Messages\PrepareStatementOkMessage($this); |
|
336 | 2 | break; |
|
337 | 13 | case $isOkMessage: |
|
1 ignored issue
–
show
|
|||
338 | 13 | $message = new \Plasma\Drivers\MySQL\Messages\OkResponseMessage($this); |
|
339 | 13 | break; |
|
340 | 5 | case ($firstChar === \Plasma\Drivers\MySQL\Messages\EOFMessage::getID() && $length < 6): |
|
341 | $message = new \Plasma\Drivers\MySQL\Messages\EOFMessage($this); |
||
342 | break; |
||
343 | default: |
||
344 | 5 | $buffer->prepend($firstChar); |
|
345 | |||
346 | 5 | if($this->parseCallback !== null) { |
|
347 | $parse = $this->parseCallback; |
||
348 | $this->parseCallback = null; |
||
349 | |||
350 | $caller = new \Plasma\Drivers\MySQL\ProtocolOnNextCaller($this, $buffer); |
||
351 | $parse($caller); |
||
352 | 5 | } elseif($this->currentCommand !== null) { |
|
353 | 5 | $caller = new \Plasma\Drivers\MySQL\ProtocolOnNextCaller($this, $buffer); |
|
354 | 5 | $this->currentCommand->onNext($caller); |
|
355 | } |
||
356 | |||
357 | 5 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Left over buffer: '.$buffer->getSize()) || true)); |
|
358 | |||
359 | 5 | if($this->buffer->getSize() > 0) { |
|
360 | 5 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Scheduling future read with '.$this->buffer->getSize().' bytes') || true)); |
|
361 | |||
362 | $this->driver->getLoop()->futureTick(function () { |
||
363 | 5 | $this->processBuffer(); |
|
364 | 5 | }); |
|
365 | } |
||
366 | |||
367 | 5 | return; |
|
368 | break; |
||
369 | } |
||
370 | } |
||
371 | |||
372 | 16 | \assert((\Plasma\Drivers\MySQL\Messages\MessageUtility::debug('Received Message '.\get_class($message)) || true)); |
|
373 | |||
374 | 16 | $state = $message->setParserState(); |
|
375 | 16 | if($state !== -1) { |
|
376 | 16 | $this->state = $state; |
|
377 | } |
||
378 | |||
379 | 16 | if($message instanceof \Plasma\Drivers\MySQL\Messages\HandshakeMessage) { |
|
380 | 16 | $this->handshakeMessage = $message; |
|
381 | } |
||
382 | |||
383 | 16 | $this->handleMessage($buffer, $message); |
|
384 | 16 | } |
|
492 |