trait AsynchronousIo[Value] extends Keyword[AsynchronousIo[Value], Value]
The base keyword to perform asynchronous IO in domains.task.Tasks.
- Source
- AsynchronousIo.scala
The following
readAll
is a Task to read file content with the help of AsynchronousIo.ReadFileimport java.nio._, file._, channels._ import com.thoughtworks.dsl.domains.task.Task import com.thoughtworks.dsl.keywords._ import com.thoughtworks.dsl.keywords.Shift._ import com.thoughtworks.dsl.keywords.AsynchronousIo.ReadFile import scala.collection.mutable.ArrayBuffer import scala.io.Codec def readAll(channel: AsynchronousFileChannel, temporaryBufferSize: Int = 4096): Task[ArrayBuffer[CharBuffer]] = Task { val charBuffers = ArrayBuffer.empty[CharBuffer] val decoder = Codec.UTF8.decoder val byteBuffer = ByteBuffer.allocate(temporaryBufferSize) var position: Long = 0L while (!ReadFile(channel, byteBuffer, position) != -1) { position += byteBuffer.position() byteBuffer.flip() charBuffers += decoder.decode(byteBuffer) byteBuffer.clear() } charBuffers }
Task
s created from !-notation can be used infor
-comprehension, and other keywords can be used together in the samefor
block. For example, the followingcat
function contains a singlefor
block to concatenate file contents. It asynchronously iterates elementsSeq
,ArrayBuffer
andString
with the help of keywords.Each, managed native resources with the help of keywords.Using, performs previously createdreadAll
task with the help of keywords.Shift, and finally converts the return type as aTask[Vector[Char]]
.import com.thoughtworks.dsl.comprehension._ import com.thoughtworks.dsl.keywords._ import com.thoughtworks.dsl.keywords.Shift._ import com.thoughtworks.dsl.domains.task.Task import java.net.URL def cat(paths: Path*) = { for { path <- Each(paths) channel <- Using(AsynchronousFileChannel.open(path)) charBuffers <- readAll(channel) charBuffer <- Each(charBuffers) char <- Each(charBuffer.toString) } yield char }.as[Task[Vector[Char]]]
Then the
cat
function is used to concatenate files from this project, as shown below:Task.toFuture(Task { (!cat(Paths.get(".sbtopts"), Paths.get(".scalafmt.conf"))).mkString should be( "-J-XX:MaxMetaspaceSize=512M\n-J-Xmx5G\n-J-Xss6M\nversion = \"1.5.1\"\nmaxColumn = 120" ) })
- Alphabetic
- By Inheritance
- AsynchronousIo
- Keyword
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Abstract Value Members
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- Any
- final def ##(): Int
- Definition Classes
- Any
- def +(other: String): String
- Implicit
- This member is added by an implicit conversion from AsynchronousIo[Value] toany2stringadd[AsynchronousIo[Value]] performed by method any2stringadd in scala.Predef.
- Definition Classes
- any2stringadd
- def ->[B](y: B): (AsynchronousIo[Value], B)
- Implicit
- This member is added by an implicit conversion from AsynchronousIo[Value] toArrowAssoc[AsynchronousIo[Value]] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @inline()
- final def ==(arg0: Any): Boolean
- Definition Classes
- Any
- final def apply[Domain](handler: (Value) => Domain)(implicit dsl: Dsl[AsynchronousIo[Value], Domain, Value]): Domain
- Definition Classes
- Keyword
- Annotations
- @inline()
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- final def cpsApply[Domain](handler: (Value) => Domain)(implicit dsl: Dsl[AsynchronousIo[Value], Domain, Value]): Domain
- Definition Classes
- Keyword
- Annotations
- @inline()
- def ensuring(cond: (AsynchronousIo[Value]) => Boolean, msg: => Any): AsynchronousIo[Value]
- Implicit
- This member is added by an implicit conversion from AsynchronousIo[Value] toEnsuring[AsynchronousIo[Value]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: (AsynchronousIo[Value]) => Boolean): AsynchronousIo[Value]
- Implicit
- This member is added by an implicit conversion from AsynchronousIo[Value] toEnsuring[AsynchronousIo[Value]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean, msg: => Any): AsynchronousIo[Value]
- Implicit
- This member is added by an implicit conversion from AsynchronousIo[Value] toEnsuring[AsynchronousIo[Value]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean): AsynchronousIo[Value]
- Implicit
- This member is added by an implicit conversion from AsynchronousIo[Value] toEnsuring[AsynchronousIo[Value]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def equals(arg0: Any): Boolean
- Definition Classes
- Any
- def formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from AsynchronousIo[Value] toStringFormat[AsynchronousIo[Value]] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @inline()
- def hashCode(): Int
- Definition Classes
- Any
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def toString(): String
- Definition Classes
- Any
- final def unary_!: Value
- Definition Classes
- Keyword
- Annotations
- @shift() @compileTimeOnly("This method requires the compiler plugin: `addCompilerPlugin(\"com.thoughtworks.dsl\" %% \"compilerplugins-bangnotation\" % \"latest.release\")` and must only be called inside a code block annotated as `@reset`.")
Deprecated Value Members
- def →[B](y: B): (AsynchronousIo[Value], B)
- Implicit
- This member is added by an implicit conversion from AsynchronousIo[Value] toArrowAssoc[AsynchronousIo[Value]] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use
->
instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.