package Ġnet . cord a . flows Ċ Ċ import Ġnet . cord a . core . contracts . Attachment Ċ import Ġnet . cord a . core . crypto . Party Ċ import Ġnet . cord a . core . crypto . Secure Hash Ċ import Ġnet . cord a . core . crypto . sha 2 5 6 Ċ import Ġjava . io . InputStream Ċ Ċ /** Ċ Ġ* ĠGiven Ġa Ġset Ġof Ġhashes Ġeither Ġloads Ġfrom Ġfrom Ġlocal Ġstorage Ġ Ġor Ġrequests Ġthem Ġfrom Ġthe Ġother Ġpeer . ĠDown loaded Ċ Ġ* Ġattachments Ġare Ġsaved Ġto Ġlocal Ġstorage Ġautomatically . Ċ Ġ*/ Ċ class ĠFetch Attachments Flow ( requests : ĠSet < Secure Hash >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Side : ĠParty ) Ġ: ĠFetch Data Flow < Attachment , ĠByteArray >( requests , Ġother Side ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġload ( tx id : ĠSecure Hash ): ĠAttachment ? Ġ= Ġservice Hub . storage Service . attachments . open Attachment ( tx id ) ĊĊĠĠĠ Ġoverride Ġfun Ġconvert ( wire : ĠByteArray ): ĠAttachment Ġ= ĠByteArray Attachment ( wire ) ĊĊĠĠĠ Ġoverride Ġfun Ġmaybe WriteTo Disk ( downloaded : ĠList < Attachment >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( attachment Ġin Ġdownloaded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Hub . storage Service . attachments . import Attachment ( attachment . open ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠByteArray Attachment ( private Ġval Ġwire Ġ: ĠByteArray ) Ġ: ĠAttachment Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġid : ĠSecure Hash Ġby Ġlazy Ġ{ Ġwire . sha 2 5 6 () Ġ} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġopen (): ĠInputStream Ġ= Ġwire . inputStream () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?) Ġ= Ġother Ġ=== Ġthis Ġ|| Ġother Ġis ĠAttachment Ġ&& Ġother . id Ġ== Ġthis . id ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġid . hashCode () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ"${ java Class . simple Name }( id =$ id )" ĊĠĠĠ Ġ} Ċ } Ċ