2424use Laudis \Neo4j \Common \Neo4jLogger ;
2525use Laudis \Neo4j \Common \SemaphoreFactory ;
2626use Laudis \Neo4j \Contracts \SemaphoreFactoryInterface ;
27+ use Laudis \Neo4j \Enum \SocketType ;
2728use Psr \Log \LoggerInterface ;
2829use Psr \Log \LogLevel ;
2930use Psr \SimpleCache \CacheInterface ;
@@ -44,11 +45,13 @@ final class DriverConfiguration
4445 /** @var callable():(SemaphoreFactoryInterface|null)|SemaphoreFactoryInterface|null */
4546 private $ semaphoreFactory ;
4647 private ?Neo4jLogger $ logger ;
48+ private ?SocketType $ socketType ;
4749
4850 /**
4951 * @param callable():(CacheInterface|null)|CacheInterface|null $cache
5052 * @param callable():(SemaphoreFactoryInterface|null)|SemaphoreFactoryInterface|null $semaphore
51- * @param string|null $logLevel The log level to use. If null, LogLevel::INFO is used.
53+ * @param string|null $logLevel The log level to use. If null, LogLevel::INFO is used.
54+ * @param SocketType|null $socketType the socket type to use (SocketType::SOCKETS(), SocketType::STREAM(), or null for auto-detect)
5255 *
5356 * @psalm-external-mutation-free
5457 */
@@ -61,6 +64,7 @@ public function __construct(
6164 callable |SemaphoreFactoryInterface |null $ semaphore ,
6265 ?string $ logLevel ,
6366 ?LoggerInterface $ logger ,
67+ ?SocketType $ socketType = null ,
6468 ) {
6569 $ this ->cache = $ cache ;
6670 $ this ->semaphoreFactory = $ semaphore ;
@@ -69,6 +73,7 @@ public function __construct(
6973 } else {
7074 $ this ->logger = null ;
7175 }
76+ $ this ->socketType = $ socketType ;
7277 }
7378
7479 /**
@@ -83,6 +88,7 @@ public static function create(
8388 SemaphoreFactoryInterface $ semaphore ,
8489 ?string $ logLevel ,
8590 ?LoggerInterface $ logger ,
91+ ?SocketType $ socketType = null ,
8692 ): self {
8793 return new self (
8894 $ userAgent ,
@@ -92,7 +98,8 @@ public static function create(
9298 $ acquireConnectionTimeout ,
9399 $ semaphore ,
94100 $ logLevel ,
95- $ logger
101+ $ logger ,
102+ $ socketType
96103 );
97104 }
98105
@@ -261,4 +268,23 @@ public function withLogger(?string $logLevel, ?LoggerInterface $logger): self
261268
262269 return $ tbr ;
263270 }
271+
272+ /**
273+ * @psalm-immutable
274+ */
275+ public function getSocketType (): ?SocketType
276+ {
277+ return $ this ->socketType ;
278+ }
279+
280+ /**
281+ * @psalm-immutable
282+ */
283+ public function withSocketType (?SocketType $ socketType ): self
284+ {
285+ $ tbr = clone $ this ;
286+ $ tbr ->socketType = $ socketType ;
287+
288+ return $ tbr ;
289+ }
264290}
0 commit comments