public function handle()
	{
		try {
			$request = $this->transport->receive();

			list($method, $params) = $this->encoder->decodeMethod($request);

			if (!$method) {
				$result = null;
			}
			else {
				if (
					$this->logger !== null &&
					$this->logger->isHandling(\Monolog\Logger::DEBUG)
				) {
					$this->logger->addDebug(
						'Receive remote method invocation',
						array(
							 'method' => $method,
							 'params' => $params
						)
					);
				}

				$result = $this->invoke(
					$this->target,
					$method,
					$params
				);
			}

			$response = $this->encoder->encodeResult($result);

			$this->transport->respond($response);
		}
		catch (\Exception $e) {
			$response = $this->encoder->encodeException($e);

			$this->transport->respond($response);
		}
	}