Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function onData($data, MessageInterface $message = null, callable $onMessage, callable $onControl = null, $context = null) {
- RECURSE:
- $overflow = '';
- $onControl ?: $this->noop;
- $message ?: $message = $this->newMessage();
- $prevFrame = null;
- $frameCount = count($message);
- if ($frameCount > 0) {
- $frame = $message[$frameCount - 1];
- if ($frame->isCoalesced()) {
- $prevFrame = $frame;
- $frame = $this->newFrame();
- $message->addFrame($frame);
- $frameCount++;
- } elseif ($frameCount > 1) {
- $prevFrame = $message[$frameCount - 2];
- }
- } else {
- $frame = $this->newFrame();
- $message->addFrame($frame);
- $frameCount++;
- }
- $frame->addBuffer($data);
- if ($frame->isCoalesced()) {
- $frame = $this->frameCheck($frame, $prevFrame);
- $opcode = $frame->getOpcode();
- if ($opcode > 2) {
- $onControl($frame, $context);
- unset($message[$frameCount - 1]);
- $overflow = $frame->extractOverflow();
- if (strlen($overflow) > 0) {
- $message = $this->onData($overflow, $message, $onMessage, $onControl, $context);
- }
- return $message;
- }
- $overflow = $frame->extractOverflow();
- $frame->unMaskPayload();
- }
- if ($message->isCoalesced()) {
- $msgCheck = $this->checkMessage($message);
- if (true !== $msgCheck) {
- $onControl($this->newCloseFrame($msgCheck), $context);
- return $this->newMessage();
- }
- $onMessage($message, $context);
- $message = $this->newMessage();
- }
- if (strlen($overflow) > 0) {
- goto RECURSE;
- //$this->onData($overflow, $message, $onMessage, $onControl, $context);
- }
- return $message;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement