package Ġu y . ko hes ive . k over t . vertx . boot Ċ Ċ import Ġcom . hazelcast . config . Group Config Ċ import Ġcom . hazelcast . config . Xml Config Builder Ċ import Ġio . vertx . core . Vert x Ċ import Ġio . vertx . core . Vert x Options Ċ import Ġio . vertx . core . logging . Logger Ċ import Ġio . vertx . spi . cluster . hazelcast . H azelcast ClusterManager Ċ import Ġnl . k omp onent s . kov enant . Promise Ċ import Ġnl . k omp onent s . kov enant . deferred Ċ import Ġu y . kl utter . config . types afe .* Ċ import Ġu y . kl utter . core . common . verified By Ċ import Ġu y . kl utter . core . jdk 7 . not Exists Ċ import Ġu y . kl utter . vertx . Wrapped Throwable Exception Ċ import Ġu y . kl utter . vertx . vertx Ċ import Ġu y . kl utter . vertx . vertx Cluster Ċ import Ġu y . ko hes ive . in jekt . In jekt Ċ import Ġu y . ko hes ive . in jekt . api .* Ċ import Ġjava . net . Inet Address Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Paths Ċ Ċ public Ġobject ĠK over t Vert x Module Ġ: ĠKon fig Module , ĠIn jekt Module Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠKon fig Registrar . register Configur ables () Ġ{ ĊĠĠĠĠĠĠĠ Ġbind Class At Config Root < Vert x Config >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠIn jekt Registrar . register Inject ables () Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ public Ġclass ĠK over t Vert x Ġprivate Ġconstructor () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠLOG : ĠLogger Ġ= Ġio . vertx . core . logging . LoggerFactory . getLogger ( K over t Vert x :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġa ĠPromise < Vert x , ĠException > Ġrepresenting Ġthe Ġstarted ĠVert x Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġstart ( vertx Cfg : ĠVert x Config Ġ= ĠIn jekt . get (), Ġworking Dir : ĠPath ? Ġ= Ġnull , Ġvert x Options Init : ĠVert x Options . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠPromise < Vert x , ĠException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . warn (" Starting ĠVert x ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeferred Ġ= Ġdeferred < Vert x , ĠException >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . setProperty (" vertx . disable File CP Res olving ", Ġ" true ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . setProperty (" vertx . disable File Caching ", Ġvert xC fg . file Caching . enable Cache . not (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! vertx Cfg . file Caching . cache Base Dir . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . setProperty (" vertx . cacheDir Base ", Ġvert xC fg . file Caching . cache Base Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalculated Working Dir Ġ= Ġ( working Dir Ġ?: ĠPaths . get ( System . getProperty (" vertx . cwd ", Ġ". ")) ). to AbsolutePath () Ġverified By Ġ{ Ġpath Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( path . not Exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" Working Ġdirectory Ġwas Ġspecified Ġas Ġ${ path . toString ()}, Ġbut Ġdoes Ġnot Ġexist .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( System . getProperty (" vertx . cwd ") Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . setProperty (" vertx . cwd ", Ġcalculated Working Dir . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum Co res Ġ= ĠRuntime . get Runtime (). available Processors () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh azelcast Config Ġ= ĠXml Config Builder (). build (). set Group Config ( Group Config ( vertx Cfg . cluster Name , Ġvert xC fg . cluster Pass )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( vertx Cfg . force Local Cluster Only ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloop back Ġ= ĠInet Address . get Loop back Address (). host Address ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh azelcast Config . network Config . interfaces . set Interfaces ( set Of ( loop back )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh azelcast Config . network Config . join . mult icast Config . setEnabled ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh azelcast Config . network Config . join . tcp Ip Config . setEnabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh azelcast Config . network Config . join . tcp Ip Config . set Members ( listOf ( loop back )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . trace ( hazelcast Config . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvert x Options Ġ= ĠVert x Options (). set Worker PoolSize ( vertx Cfg . worker ThreadPool Size . coerce In (( num Co res Ġ* Ġ 2 ) .. ( num Co res Ġ* Ġ 1 2 8 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cluster ed ( vertx Cfg . cluster ed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ClusterManager ( H azelcast ClusterManager ( hazelcast Config )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Ġ( vertx Options ) Ġ{ Ġvert x Options Init () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstartup Promise Ġ= Ġif Ġ( vertx Options . is Cluster ed ()) Ġvert x Cluster ( vertx Options ) Ġelse Ġvert x ( vertx Options ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstartup Promise Ġsuccess Ġ{ Ġvert x Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeferred . resolve ( vertx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfail Ġ{ Ġfailure Exception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . error (" Vert x Ġdeployment Ġfailed Ġdue Ġto Ġ${ failure Exception . message }", Ġfailure Exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeferred . reject ( failure Exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeferred . reject ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeferred . reject ( Wrapped Throwable Exception ( ex )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdeferred . promise ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ public Ġdata Ġclass ĠVert x Config ( val Ġcluster ed : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcluster Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcluster Pass : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġworker ThreadPool Size : ĠInt Ġ= ĠRuntime . get Runtime (). available Processors () Ġ* Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Caching : ĠFile Cache Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġforce Local Cluster Only : ĠBoolean Ġ= Ġfalse ) Ċ Ċ public Ġdata Ġclass ĠFile Cache Config ( val Ġenable Cache : ĠBoolean , Ġval Ġcache Base Dir : ĠString ?) ĊĊ