123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- <?php
- namespace Aws\CloudWatchLogs;
- use Aws\AwsClient;
- use Aws\CommandInterface;
- use Generator;
- class CloudWatchLogsClient extends AwsClient {
- static $streamingCommands = [
- 'StartLiveTail' => true
- ];
- public function __construct(array $args)
- {
- parent::__construct($args);
- $this->addStreamingFlagMiddleware();
- }
- private function addStreamingFlagMiddleware()
- {
- $this->getHandlerList()
- -> appendInit(
- $this->getStreamingFlagMiddleware(),
- 'streaming-flag-middleware'
- );
- }
- private function getStreamingFlagMiddleware(): callable
- {
- return function (callable $handler) {
- return function (CommandInterface $command, $request = null) use ($handler) {
- if (!empty(self::$streamingCommands[$command->getName()])) {
- $command['@http']['stream'] = true;
- }
- return $handler($command, $request);
- };
- };
- }
-
- public function startLiveTailCheckingForResults(array $args): Generator
- {
- $response = $this->startLiveTail($args);
- foreach ($response['responseStream'] as $streamChunk) {
- if (isset($streamChunk['sessionUpdate'])) {
- if (!empty($streamChunk['sessionUpdate']['sessionResults'])) {
- yield $streamChunk;
- }
- } else {
- yield $streamChunk;
- }
- }
- }
- }
|