Advertisement
Guest User

Untitled

a guest
Jul 5th, 2015
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. public function onData($data, MessageInterface $message = null, callable $onMessage, callable $onControl = null, $context = null) {
  2. RECURSE:
  3. $overflow = '';
  4. $onControl ?: $this->noop;
  5. $message ?: $message = $this->newMessage();
  6. $prevFrame = null;
  7. $frameCount = count($message);
  8. if ($frameCount > 0) {
  9. $frame = $message[$frameCount - 1];
  10. if ($frame->isCoalesced()) {
  11. $prevFrame = $frame;
  12. $frame = $this->newFrame();
  13. $message->addFrame($frame);
  14. $frameCount++;
  15. } elseif ($frameCount > 1) {
  16. $prevFrame = $message[$frameCount - 2];
  17. }
  18. } else {
  19. $frame = $this->newFrame();
  20. $message->addFrame($frame);
  21. $frameCount++;
  22. }
  23. $frame->addBuffer($data);
  24. if ($frame->isCoalesced()) {
  25. $frame = $this->frameCheck($frame, $prevFrame);
  26. $opcode = $frame->getOpcode();
  27. if ($opcode > 2) {
  28. $onControl($frame, $context);
  29. unset($message[$frameCount - 1]);
  30. $overflow = $frame->extractOverflow();
  31. if (strlen($overflow) > 0) {
  32. $message = $this->onData($overflow, $message, $onMessage, $onControl, $context);
  33. }
  34. return $message;
  35. }
  36. $overflow = $frame->extractOverflow();
  37. $frame->unMaskPayload();
  38. }
  39. if ($message->isCoalesced()) {
  40. $msgCheck = $this->checkMessage($message);
  41. if (true !== $msgCheck) {
  42. $onControl($this->newCloseFrame($msgCheck), $context);
  43. return $this->newMessage();
  44. }
  45. $onMessage($message, $context);
  46. $message = $this->newMessage();
  47. }
  48. if (strlen($overflow) > 0) {
  49. goto RECURSE;
  50. //$this->onData($overflow, $message, $onMessage, $onControl, $context);
  51. }
  52. return $message;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement