@@ -13,7 +13,7 @@ import { Status } from './status';
1313import { Schema } from './schema' ;
1414import { VaultManager } from './vaults' ;
1515import { ACL } from './acl' ;
16- import { NodeManager } from './nodes' ;
16+ import { NodeConnectionManager , NodeGraph , NodeManager } from './nodes' ;
1717import { NotificationsManager } from './notifications' ;
1818import { GestaltGraph } from './gestalts' ;
1919import { Sigchain } from './sigchain' ;
@@ -71,6 +71,8 @@ class PolykeyAgent {
7171 gestaltGraph,
7272 fwdProxy,
7373 revProxy,
74+ nodeGraph,
75+ nodeConnectionManager,
7476 nodeManager,
7577 discovery,
7678 vaultManager,
@@ -112,6 +114,8 @@ class PolykeyAgent {
112114 gestaltGraph ?: GestaltGraph ;
113115 fwdProxy ?: ForwardProxy ;
114116 revProxy ?: ReverseProxy ;
117+ nodeGraph ?: NodeGraph ;
118+ nodeConnectionManager ?: NodeConnectionManager ;
115119 nodeManager ?: NodeManager ;
116120 discovery ?: Discovery ;
117121 vaultManager ?: VaultManager ;
@@ -243,19 +247,35 @@ class PolykeyAgent {
243247 ...reverseProxyConfig_ ,
244248 logger : logger . getChild ( ReverseProxy . name ) ,
245249 } ) ;
246- nodeManager =
247- nodeManager ??
248- ( await NodeManager . createNodeManager ( {
249- db,
250- seedNodes,
250+ nodeGraph =
251+ nodeGraph ??
252+ ( await NodeGraph . createNodeGraph ( {
253+ db,
254+ fresh,
255+ keyManager,
256+ logger : logger . getChild ( NodeGraph . name ) ,
257+ } ) ) ;
258+ nodeConnectionManager =
259+ nodeConnectionManager ??
260+ ( await NodeConnectionManager . createNodeConnectionManager ( {
261+ keyManager,
262+ nodeGraph,
263+ fwdProxy,
264+ revProxy,
265+ seedNodes,
266+ logger : logger . getChild ( NodeConnectionManager . name ) ,
267+ } ) ) ;
268+ nodeManager =
269+ nodeManager ??
270+ ( await NodeManager . createNodeManager ( {
271+ db,
251272 sigchain,
252273 keyManager,
253- fwdProxy,
254- revProxy,
255- logger : logger . getChild ( NodeManager . name ) ,
256- fresh,
257- } ) ) ;
258- // Discovery uses in-memory CreateDestroy pattern
274+ nodeGraph,
275+ nodeConnectionManager,
276+ logger : logger . getChild ( NodeManager . name ) ,
277+ } ) ) ;
278+ // Discovery uses in-memory CreateDestroy pattern
259279 // Therefore it should be destroyed during stop
260280 discovery =
261281 discovery ??
@@ -271,7 +291,7 @@ class PolykeyAgent {
271291 vaultsKey : keyManager . vaultKey ,
272292 vaultsPath,
273293 keyManager,
274- nodeManager ,
294+ nodeConnectionManager ,
275295 gestaltGraph,
276296 acl,
277297 db,
@@ -338,6 +358,8 @@ class PolykeyAgent {
338358 gestaltGraph,
339359 fwdProxy,
340360 revProxy,
361+ nodeGraph,
362+ nodeConnectionManager,
341363 nodeManager,
342364 discovery,
343365 vaultManager,
@@ -368,6 +390,8 @@ class PolykeyAgent {
368390 public readonly gestaltGraph : GestaltGraph ;
369391 public readonly fwdProxy : ForwardProxy ;
370392 public readonly revProxy : ReverseProxy ;
393+ public readonly nodeGraph : NodeGraph ;
394+ public readonly nodeConnectionManager : NodeConnectionManager ;
371395 public readonly nodeManager : NodeManager ;
372396 public readonly discovery : Discovery ;
373397 public readonly vaultManager : VaultManager ;
@@ -391,6 +415,8 @@ class PolykeyAgent {
391415 gestaltGraph,
392416 fwdProxy,
393417 revProxy,
418+ nodeGraph,
419+ nodeConnectionManager,
394420 nodeManager,
395421 discovery,
396422 vaultManager,
@@ -412,6 +438,8 @@ class PolykeyAgent {
412438 gestaltGraph : GestaltGraph ;
413439 fwdProxy : ForwardProxy ;
414440 revProxy : ReverseProxy ;
441+ nodeGraph : NodeGraph ;
442+ nodeConnectionManager : NodeConnectionManager ;
415443 nodeManager : NodeManager ;
416444 discovery : Discovery ;
417445 vaultManager : VaultManager ;
@@ -434,6 +462,8 @@ class PolykeyAgent {
434462 this . gestaltGraph = gestaltGraph ;
435463 this . fwdProxy = fwdProxy ;
436464 this . revProxy = revProxy ;
465+ this . nodeGraph = nodeGraph ;
466+ this . nodeConnectionManager = nodeConnectionManager ;
437467 this . nodeManager = nodeManager ;
438468 this . discovery = discovery ;
439469 this . vaultManager = vaultManager ;
@@ -466,14 +496,17 @@ class PolykeyAgent {
466496 vaultManager : this . vaultManager ,
467497 nodeManager : this . nodeManager ,
468498 sigchain : this . sigchain ,
469- notificationsManager : this . notificationsManager ,
470- } ) ;
471- const clientService = createClientService ( {
472- pkAgent : this ,
473- discovery : this . discovery ,
474- gestaltGraph : this . gestaltGraph ,
475- identitiesManager : this . identitiesManager ,
476- keyManager : this . keyManager ,
499+ nodeConnectionManager : this . nodeConnectionManager ,
500+ notificationsManager : this . notificationsManager ,
501+ } ) ;
502+ const clientService = createClientService ( {
503+ pkAgent : this ,
504+ discovery : this . discovery ,
505+ gestaltGraph : this . gestaltGraph ,
506+ identitiesManager : this . identitiesManager ,
507+ keyManager : this . keyManager ,
508+ nodeGraph : this . nodeGraph ,
509+ nodeConnectionManager : this . nodeConnectionManager ,
477510 nodeManager : this . nodeManager ,
478511 notificationsManager : this . notificationsManager ,
479512 sessionManager : this . sessionManager ,
@@ -527,8 +560,10 @@ class PolykeyAgent {
527560 ingressPort : networkConfig_ . ingressPort ,
528561 tlsConfig,
529562 } ) ;
530- await this . nodeManager . start ( { fresh } ) ;
531- await this . nodeManager . getConnectionsToSeedNodes ( ) ;
563+ await this . nodeConnectionManager . start ( ) ;
564+ await this . nodeGraph . start ( { fresh } ) ;
565+ await this . nodeManager . start ( ) ;
566+ await this . nodeConnectionManager . getConnectionsToSeedNodes ( ) ;
532567 await this . nodeManager . syncNodeGraph ( ) ;
533568 await this . vaultManager . start ( { fresh } ) ;
534569 await this . notificationsManager . start ( { fresh } ) ;
@@ -577,6 +612,8 @@ class PolykeyAgent {
577612 await this . vaultManager . stop ( ) ;
578613 await this . discovery . destroy ( ) ;
579614 await this . nodeManager . stop ( ) ;
615+ await this . nodeConnectionManager . stop ( ) ;
616+ await this . nodeGraph . stop ( ) ;
580617 await this . revProxy . stop ( ) ;
581618 await this . fwdProxy . stop ( ) ;
582619 await this . grpcServerAgent . stop ( ) ;
@@ -600,6 +637,8 @@ class PolykeyAgent {
600637 await this . notificationsManager . destroy ( ) ;
601638 await this . vaultManager . destroy ( ) ;
602639 await this . nodeManager . destroy ( ) ;
640+ await this . nodeConnectionManager . destroy ( ) ;
641+ await this . nodeGraph . destroy ( ) ;
603642 await this . gestaltGraph . destroy ( ) ;
604643 await this . acl . destroy ( ) ;
605644 await this . sigchain . destroy ( ) ;
0 commit comments