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 |