/**
  * @param \Neoxygen\NeoClient\Event\HttpClientPreSendRequestEvent $event
  */
 public function onPreHttpRequestSend(HttpClientPreSendRequestEvent $event)
 {
     $conn = $event->getRequest()->getConnection();
     $request = $event->getRequest();
     $mode = $request->hasQueryMode() ? $request->getQueryMode() : 'ASSUMED WRITE';
     $this->logger->log('debug', sprintf('Sending "%s" request to the "%s" connection', $mode, $conn));
 }
 public function onPreSend(HttpClientPreSendRequestEvent $event)
 {
     $request = $event->getRequest();
     $conn = $request->getConnection();
     if (isset($this->fails[$conn]) && $this->fails[$conn] >= 5) {
         if ($request->hasQueryMode()) {
             if ($request->getQueryMode() === 'READ') {
                 if ($this->connectionManager->hasNextSlave([$conn])) {
                     $next = $this->connectionManager->getNextSlave([$conn]);
                     $request->setInfoFromConnection($this->connectionManager->getConnection($next));
                 }
             }
         }
     }
 }
 public function onPreSend(HttpClientPreSendRequestEvent $event)
 {
     $request = $event->getRequest();
     $conn = $request->getConnection();
     if (isset($this->fails[$conn]) && $this->fails[$conn] >= 5) {
         if ($request->hasQueryMode()) {
             if ($request->getQueryMode() === 'READ') {
                 if ($this->connectionManager->hasNextSlave([$conn])) {
                     $next = $this->connectionManager->getNextSlave([$conn]);
                     $this->setHaPrimarySlave($next);
                     $request->setInfoFromConnection($this->connectionManager->getConnection($next));
                 }
             }
         }
     }
     if (null !== $this->masterWriteFails && $request->getQueryMode() == 'WRITE' && $this->masterWriteFails >= 5) {
         if (null !== $this->newMasterDetected) {
             $this->setHaNewMaster($this->newMasterDetected);
             $conn = $this->connectionManager->getConnection($this->newMasterDetected);
             Client::log('debug', sprintf('Automatic Write connection change after 5 write failures on Master. Changing to the "%s" connection', $this->newMasterDetected));
             $request->setInfoFromConnection($conn);
         }
     }
 }
 /**
  * Add specific headers to the Request object for helping HA proxies to determine if it is a read or write query.
  *
  * @param \Neoxygen\NeoClient\Event\HttpClientPreSendRequestEvent $event
  */
 public function onPreSendHAHeaders(HttpClientPreSendRequestEvent $event)
 {
     if ($event->getRequest()->getQueryMode() == 'WRITE') {
         $event->getRequest()->setHeader($this->queryModeHeaderName, $this->queryModeWriteQueryHeaderValue);
     } elseif ($event->getRequest()->getQueryMode() == 'READ') {
         $event->getRequest()->setHeader($this->queryModeHeaderName, $this->queryModeReadQueryHeaderValue);
     }
 }