mules-reload


License

License

MIT
GroupId

GroupId

io.chrisdavenport
ArtifactId

ArtifactId

mules-reload_2.11
Last Version

Last Version

0.2.1
Release Date

Release Date

Type

Type

jar
Description

Description

mules-reload
mules-reload
Project URL

Project URL

https://github.com/ChristopherDavenport/mules
Project Organization

Project Organization

io.chrisdavenport
Source Code Management

Source Code Management

https://github.com/ChristopherDavenport/mules

Download mules-reload_2.11

How to add to project

<!-- https://jarcasting.com/artifacts/io.chrisdavenport/mules-reload_2.11/ -->
<dependency>
    <groupId>io.chrisdavenport</groupId>
    <artifactId>mules-reload_2.11</artifactId>
    <version>0.2.1</version>
</dependency>
// https://jarcasting.com/artifacts/io.chrisdavenport/mules-reload_2.11/
implementation 'io.chrisdavenport:mules-reload_2.11:0.2.1'
// https://jarcasting.com/artifacts/io.chrisdavenport/mules-reload_2.11/
implementation ("io.chrisdavenport:mules-reload_2.11:0.2.1")
'io.chrisdavenport:mules-reload_2.11:jar:0.2.1'
<dependency org="io.chrisdavenport" name="mules-reload_2.11" rev="0.2.1">
  <artifact name="mules-reload_2.11" type="jar" />
</dependency>
@Grapes(
@Grab(group='io.chrisdavenport', module='mules-reload_2.11', version='0.2.1')
)
libraryDependencies += "io.chrisdavenport" % "mules-reload_2.11" % "0.2.1"
[io.chrisdavenport/mules-reload_2.11 "0.2.1"]

Dependencies

compile (5)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.11.12
io.chrisdavenport : mules_2.11 jar 0.2.1
org.typelevel : cats-core_2.11 jar 1.6.1
org.typelevel : cats-effect_2.11 jar 1.4.0
org.typelevel : cats-collections-core_2.11 jar 0.7.0

test (5)

Group / Artifact Type Version
org.typelevel : cats-effect-laws_2.11 jar 1.4.0
org.specs2 : specs2-core_2.11 jar 4.7.0
org.specs2 : specs2-scalacheck_2.11 jar 4.7.0
org.typelevel : discipline_2.11 jar 0.11.1
com.github.alexarchambault : scalacheck-shapeless_1.13_2.11 jar 1.1.8

Project Modules

There are no modules declared in this project.

mules Build Status Maven Central

Caches are tricky - Let Mules Haul its Weight.

Quickstart

To use mules in an existing SBT project with Scala 2.11 or a later version, add the following dependencies to your build.sbt depending on your needs:

libraryDependencies ++= Seq(
  "io.chrisdavenport" %% "mules"     % "<version>"
)

Then the import

import io.chrisdavenport.mules._
import cats.effect.IO
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.global
// And Our Timer

implicit val timer = IO.timer(global)

Now Lets Use What We have built.

val getInserted = for {
        cache <- MemoryCache.createMemoryCache[IO, String, Int](Some(Cache.TimeSpec.unsafeFromDuration(1.second)))
        _ <- cache.insert("Foo", 1)
        value <- cache.lookup("Foo")
} yield value
// getInserted: IO[Option[Int]] = Bind(
//   Map(
//     Delay(cats.effect.concurrent.Ref$$$Lambda$2068/1761796799@56bca113),
//     io.chrisdavenport.mules.Cache$$$Lambda$2069/1167171712@494e6dbb,
//     0
//   ),
//   ammonite.$sess.cmd7$$$Lambda$2070/1795982619@447d91ef
// )

getInserted.unsafeRunSync
// res0: Option[Int] = Some(1)

val getRemoved = for {
          cache <- MemoryCache.createMemoryCache[IO, String, Int](None)
          _ <- cache.insert("Foo", 1)
          _ <- cache.delete("Foo")
          value <- cache.lookup("Foo")
  } yield value 
// getRemoved: IO[Option[Int]] = Bind(
//   Map(
//     Delay(cats.effect.concurrent.Ref$$$Lambda$2068/1761796799@63702e4),
//     io.chrisdavenport.mules.Cache$$$Lambda$2069/1167171712@4b0d7cb5,
//     0
//   ),
//   ammonite.$sess.cmd9$$$Lambda$2129/709004859@4c511912
// )

getRemoved.unsafeRunSync
// res1: Option[Int] = None


val getAfterPurged = for {
        cache <- MemoryCache.createMemoryCache[IO, String, Int](Some(Cache.TimeSpec.unsafeFromDuration(1.second)))
        _ <- cache.insert("Foo", 1)
        _ <- timer.sleep(2.seconds)
        _ <- cache.purgeExpired
        value <- cache.lookupNoUpdate("Foo")
} yield value
// getAfterPurged: IO[Option[Int]] = Bind(
//   Map(
//     Delay(cats.effect.concurrent.Ref$$$Lambda$2068/1761796799@aa77fd0),
//     io.chrisdavenport.mules.Cache$$$Lambda$2069/1167171712@5bd3f1b3,
//     0
//   ),
//   ammonite.$sess.cmd13$$$Lambda$2170/787270911@6ce2f787
// )

getAfterPurged.unsafeRunSync
// res2: Option[Int] = None

val lookupAfterInterval = for {
        cache <- MemoryCache.createMemoryCache[IO, String, Int](Some(Cache.TimeSpec.unsafeFromDuration(1.second)))
        _ <- cache.insert("Foo", 1)
        _ <- timer.sleep(2.seconds)
        value <- cache.lookup("Foo")
} yield value
// lookupAfterInterval: IO[Option[Int]] = Bind(
//   Map(
//     Delay(cats.effect.concurrent.Ref$$$Lambda$2068/1761796799@345fa41d),
//     io.chrisdavenport.mules.Cache$$$Lambda$2069/1167171712@6e5e4c90,
//     0
//   ),
//   ammonite.$sess.cmd15$$$Lambda$2183/1918145875@76c6c15
// )

lookupAfterInterval.unsafeRunSync
// res3: Option[Int] = None

Versions

Version
0.2.1
0.2.0
0.2.0-M4
0.2.0-M3
0.2.0-M2