package Ġio . lib p 2 p . host Ċ Ċ import Ġio . lib p 2 p . core . Address Book Ċ import Ġio . lib p 2 p . core . Peer Id Ċ import Ġio . lib p 2 p . core . mult iform ats . Multi addr Ċ import Ġjava . util . concurrent . Comp letableFuture Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ class ĠMemory Address Book Ġ: ĠAddress Book Ġ{ ĊĠĠĠ Ġval Ġmap Ġ= ĊĠĠĠĠĠĠĠ ĠConcurrent HashMap < Peer Id , ĠCollection < Multi addr >>() ĊĊĠĠĠ Ġoverride Ġfun Ġget Add rs ( id : ĠPeer Id ): ĠCompletableFuture < Collection < Multi addr > ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCompletableFuture . completed Future ( map [ id ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Add rs ( id : ĠPeer Id , Ġttl : ĠLong , Ġvar arg Ġadd rs : ĠMulti addr ): ĠCompletableFuture < Void > Ġ{ ĊĠĠĠĠĠĠĠ Ġmap [ id ] Ġ= ĠlistOf (* addrs ) ĊĠĠĠĠĠĠĠ Ġreturn ĠCompletableFuture . completed Future ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Add rs ( id : ĠPeer Id , Ġttl : ĠLong , Ġvar arg Ġadd rs : ĠMulti addr ): ĠCompletableFuture < Void > Ġ{ ĊĠĠĠĠĠĠĠ Ġmap . compute ( id ) Ġ{ Ġ_, Ġexisting Add rs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( existing Add rs Ġ?: Ġempty List ()) Ġ+ ĠlistOf (* addrs ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠCompletableFuture . completed Future ( null ) ĊĠĠĠ Ġ} Ċ } Ċ