From 1579666238f611876e3662a105f7043a34189250 Mon Sep 17 00:00:00 2001 From: Chris Boden Date: Tue, 22 Dec 2015 21:11:46 -0500 Subject: [PATCH] Accept exception factory for performance gains --- src/Messaging/Streaming/MessageStreamer.php | 8 ++++---- tests/ab/startServer.php | 6 +++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Messaging/Streaming/MessageStreamer.php b/src/Messaging/Streaming/MessageStreamer.php index b14e8ee..3549b07 100644 --- a/src/Messaging/Streaming/MessageStreamer.php +++ b/src/Messaging/Streaming/MessageStreamer.php @@ -53,15 +53,15 @@ class MessageStreamer { CloseFrameChecker $frameChecker, callable $onMessage, callable $onControl = null, - $expectMask = true + $expectMask = true, + $exceptionFactory = null ) { $this->validator = $encodingValidator; $this->closeFrameChecker = $frameChecker; $this->checkForMask = (bool)$expectMask; - $exception = new \UnderflowException; - $this->exceptionFactory = function() use ($exception) { - return $exception; + $this->exceptionFactory ?: $this->exceptionFactory = function($msg) { + return new \UnderflowException($msg); }; $this->onMessage = $onMessage; diff --git a/tests/ab/startServer.php b/tests/ab/startServer.php index 6be6e62..47a5316 100644 --- a/tests/ab/startServer.php +++ b/tests/ab/startServer.php @@ -13,7 +13,9 @@ $encodingValidator = new \Ratchet\RFC6455\Encoding\Validator; $closeFrameChecker = new \Ratchet\RFC6455\Messaging\Protocol\CloseFrameChecker; $negotiator = new \Ratchet\RFC6455\Handshake\Negotiator($encodingValidator); -$server->on('request', function (\React\Http\Request $request, \React\Http\Response $response) use ($negotiator, $encodingValidator, $closeFrameChecker) { +$uException = new \UnderflowException; + +$server->on('request', function (\React\Http\Request $request, \React\Http\Response $response) use ($negotiator, $encodingValidator, $closeFrameChecker, $uException) { $psrRequest = new \GuzzleHttp\Psr7\Request($request->getMethod(), $request->getPath(), $request->getHeaders()); $negotiatorResponse = $negotiator->handshake($psrRequest); @@ -42,6 +44,8 @@ $server->on('request', function (\React\Http\Request $request, \React\Http\Respo $response->write($parser->newFrame($frame->getPayload(), true, Frame::OP_PONG)->getContents()); break; } + }, true, function() use ($uException) { + return $uException; }); $request->on('data', [$parser, 'onData']);