trait CanManage[-R] extends AnyRef
For encapsulating the management logic of a resource.
Default logic for any java.lang.AutoClosable is provided by the companion object,
which may be imported into current scope as implicits.
Other types may be provided in scope by the user. For example
import java.util.concurrent._ import io.tmos.arm.Implicits._ implicit val manager: CanManage[ExecutorService] = new CanManage[ExecutorService] { override def onFinally(pool: ExecutorService): Unit = { pool.shutdown() // Disable new tasks from being submitted try { if (!pool.awaitTermination(10, TimeUnit.SECONDS)) { // wait for normal termination pool.shutdownNow() // force terminate if (!pool.awaitTermination(10, TimeUnit.SECONDS)) // wait for forced termination throw new RuntimeException("ExecutorService did not terminate") } } catch { case _: InterruptedException => pool.shutdownNow() // (Re-)Cancel if current thread also interrupted Thread.currentThread().interrupt() // Preserve interrupt status } } override def onException(r: ExecutorService): Unit = {} } for (manage(executorService) <- Executors.newSingleThreadExecutor.manage) { ... }
- R
the type of the resource to manage
- Alphabetic
- By Inheritance
- CanManage
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- def ->[B](y: B): (CanManage[R], B)
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
- def ensuring(cond: (CanManage[R]) ⇒ Boolean, msg: ⇒ Any): CanManage[R]
- def ensuring(cond: (CanManage[R]) ⇒ Boolean): CanManage[R]
- def ensuring(cond: Boolean, msg: ⇒ Any): CanManage[R]
- def ensuring(cond: Boolean): CanManage[R]
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
- def formatted(fmtstr: String): String
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
onException(r: R): Unit
Execution hook called when an exception is thrown from the managed block.
Execution hook called when an exception is thrown from the managed block. This is executed prior to [onFinally].
Implementors are free to permit exceptions thrown from this method, however note that any new exceptions thrown will be added as a suppressed exception of the currently throwing exception. Thus it is strongly advised that implementors do not throw any exceptions if it would cause problems for an exception to be suppressed.
- r
the resource being managed
-
def
onFinally(r: R): Unit
Execution hook called after the managed block.
Execution hook called after the managed block.
This execution hook is called regardless if an exception is thrown.
Usually resources are released or closed in the lifecycle.
Implementors are free to permit exceptions thrown from this method, however it is strongly advised to not have the method throw
java.lang.InterruptedException. This exception interacts with a thread's interrupted status, and runtime misbehavior is likely to occur if anjava.lang.InterruptedExceptionis suppressed. More generally, if it would cause problems for an exception to be suppressed, the AutoCloseable.close method should not throw it."- r
the resource being managed
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
- def →[B](y: B): (CanManage[R], B)