Skip to content

Commit e78e25e

Browse files
committed
initial implementation
1 parent cb003e6 commit e78e25e

File tree

16 files changed

+398
-0
lines changed

16 files changed

+398
-0
lines changed

.github/workflows/ci.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: CI
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
test:
7+
8+
runs-on: ubuntu-latest
9+
10+
strategy:
11+
matrix:
12+
scala:
13+
- 2.13.16
14+
- 3.3.6
15+
16+
steps:
17+
- uses: actions/checkout@v3
18+
19+
- uses: coursier/cache-action@v6
20+
21+
- name: setup Java 17
22+
uses: actions/setup-java@v4
23+
with:
24+
java-version: '17'
25+
distribution: 'oracle'
26+
cache: 'sbt'
27+
28+
- name: setup SBT
29+
uses: sbt/setup-sbt@v1
30+
31+
- name: build ${{ matrix.scala }}
32+
run: sbt ++${{ matrix.scala }} clean compile test

.github/workflows/release.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
name: Publish Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
release:
10+
uses: evolution-gaming/scala-github-actions/.github/workflows/release.yml@v3
11+
secrets: inherit

.gitignore

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,29 @@
33

44
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
55
hs_err_pid*
6+
7+
# sbt specific
8+
.cache
9+
.history
10+
target/
11+
project/boot/
12+
project/plugins/project/
13+
14+
# Scala-IDE specific
15+
.scala_dependencies
16+
.worksheet
17+
18+
# Idea
19+
.idea/
20+
*.iml
21+
*.ipr
22+
23+
# Mac
24+
.DS_Store
25+
26+
# Metals/Bloop/Vscode specific
27+
.metals
28+
metals.sbt
29+
.bloop
30+
.vscode
31+
.bsp

.scalafmt.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
project.git = true
2+
version = 3.9.6
3+
runner.dialect = scala213source3
4+
trailingCommas = preserve

build.sbt

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import Dependencies._
2+
import sbt._
3+
4+
ThisBuild / versionScheme := Some("early-semver")
5+
6+
def crossSettings[T](scalaVersion: String, if3: List[T], if2: List[T]) =
7+
CrossVersion.partialVersion(scalaVersion) match {
8+
case Some((3, _)) => if3
9+
case Some((2, 12 | 13)) => if2
10+
case _ => Nil
11+
}
12+
13+
lazy val commonSettings = Seq(
14+
organization := "com.evolution",
15+
homepage := Some(
16+
url("https://github.com/evolution-gaming/akka-to-pekko-adapter")
17+
),
18+
startYear := Some(2025),
19+
organizationName := "Evolution",
20+
organizationHomepage := Some(url("https://evolution.com")),
21+
scalaVersion := crossScalaVersions.value.head,
22+
crossScalaVersions := Seq("2.13.16", "3.3.6"),
23+
licenses := Seq(("MIT", url("https://opensource.org/licenses/MIT"))),
24+
scalacOptions ++= crossSettings(
25+
scalaVersion.value,
26+
if3 = List("-release:17"),
27+
if2 = List("-release:17", "-Xsource:3"),
28+
),
29+
scalacOptsFailOnWarn := Some(false),
30+
publishTo := Some(Resolver.evolutionReleases),
31+
)
32+
33+
val alias: Seq[sbt.Def.Setting[?]] =
34+
addCommandAlias("build", "+all compile test")
35+
36+
lazy val root =
37+
project
38+
.in(file("."))
39+
.settings(
40+
commonSettings,
41+
name := "akka-to-pekko-adapter",
42+
publish / skip := true,
43+
publishArtifact := false
44+
)
45+
.settings(alias)
46+
.aggregate(actor, cluster, stream)
47+
48+
lazy val actor =
49+
project
50+
.in(file("modules/actor"))
51+
.settings(commonSettings)
52+
.settings(
53+
libraryDependencies ++= Seq(
54+
Dependencies.Pekko.actor
55+
)
56+
)
57+
58+
lazy val cluster =
59+
project
60+
.in(file("modules/cluster"))
61+
.settings(commonSettings)
62+
.settings(
63+
libraryDependencies ++= Seq(
64+
Dependencies.Pekko.cluster
65+
)
66+
)
67+
68+
lazy val stream =
69+
project
70+
.in(file("modules/stream"))
71+
.settings(commonSettings)
72+
.settings(
73+
libraryDependencies ++= Seq(
74+
Dependencies.Pekko.stream
75+
)
76+
)
77+
78+
lazy val `cluster-sharding` =
79+
project
80+
.in(file("modules/sharding"))
81+
.settings(commonSettings)
82+
.settings(
83+
libraryDependencies ++= Seq(
84+
Dependencies.Pekko.sharding
85+
)
86+
)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package akka
2+
3+
package object actor {
4+
type ActorRef = org.apache.pekko.actor.ActorRef
5+
val ActorRef: org.apache.pekko.actor.ActorRef.type =
6+
org.apache.pekko.actor.ActorRef
7+
type ActorSystem = org.apache.pekko.actor.ActorSystem
8+
val ActorSystem: org.apache.pekko.actor.ActorSystem.type =
9+
org.apache.pekko.actor.ActorSystem
10+
type ActorSystemSetup = org.apache.pekko.actor.setup.ActorSystemSetup
11+
val ActorSystemSetup: org.apache.pekko.actor.setup.ActorSystemSetup.type =
12+
org.apache.pekko.actor.setup.ActorSystemSetup
13+
type Setup = org.apache.pekko.actor.setup.Setup
14+
type BootstrapSetup = org.apache.pekko.actor.BootstrapSetup
15+
val BootstrapSetup: org.apache.pekko.actor.BootstrapSetup.type =
16+
org.apache.pekko.actor.BootstrapSetup
17+
type Props = org.apache.pekko.actor.Props
18+
val Props: org.apache.pekko.actor.Props.type = org.apache.pekko.actor.Props
19+
type Actor = org.apache.pekko.actor.Actor
20+
val Actor: org.apache.pekko.actor.Actor.type = org.apache.pekko.actor.Actor
21+
type ActorLogging = org.apache.pekko.actor.ActorLogging
22+
type ActorContext = org.apache.pekko.actor.ActorContext
23+
type ActorRefFactory = org.apache.pekko.actor.ActorRefFactory
24+
type ActorSelection = org.apache.pekko.actor.ActorSelection
25+
type ActorPath = org.apache.pekko.actor.ActorPath
26+
val ActorPath: org.apache.pekko.actor.ActorPath.type =
27+
org.apache.pekko.actor.ActorPath
28+
type ActorRefProvider = org.apache.pekko.actor.ActorRefProvider
29+
type Address = org.apache.pekko.actor.Address
30+
val Address: org.apache.pekko.actor.Address.type =
31+
org.apache.pekko.actor.Address
32+
type RootActorPath = org.apache.pekko.actor.RootActorPath
33+
val RootActorPath: org.apache.pekko.actor.RootActorPath.type =
34+
org.apache.pekko.actor.RootActorPath
35+
type Timers = org.apache.pekko.actor.Timers
36+
val AddressFromURIString = org.apache.pekko.actor.AddressFromURIString
37+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package akka
2+
3+
package object event {
4+
type LoggingAdapter = org.apache.pekko.event.LoggingAdapter
5+
val Logging: org.apache.pekko.event.Logging.type =
6+
org.apache.pekko.event.Logging
7+
type EventStream = org.apache.pekko.event.EventStream
8+
type LoggingFilter = org.apache.pekko.event.LoggingFilter
9+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package akka
2+
3+
package object util {
4+
type Timeout = org.apache.pekko.util.Timeout
5+
val Timeout: org.apache.pekko.util.Timeout.type =
6+
org.apache.pekko.util.Timeout
7+
type Version = org.apache.pekko.util.Version
8+
val Version: org.apache.pekko.util.Version.type =
9+
org.apache.pekko.util.Version
10+
}
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package akka
2+
import org.apache.pekko.cluster.privates
3+
import org.apache.pekko.util.Version
4+
5+
package object cluster {
6+
type Cluster = org.apache.pekko.cluster.Cluster
7+
val Cluster: org.apache.pekko.cluster.Cluster.type =
8+
org.apache.pekko.cluster.Cluster
9+
type Member = org.apache.pekko.cluster.Member
10+
object Member {
11+
val none = org.apache.pekko.cluster.Member.none
12+
def apply(
13+
uniqueAddress: UniqueAddress,
14+
roles: Set[String],
15+
appVersion: Version
16+
): Member =
17+
privates.Member(uniqueAddress, roles, appVersion)
18+
}
19+
type MemberStatus = org.apache.pekko.cluster.MemberStatus
20+
val MemberStatus: org.apache.pekko.cluster.MemberStatus.type =
21+
org.apache.pekko.cluster.MemberStatus
22+
type UniqueAddress = org.apache.pekko.cluster.UniqueAddress
23+
val UniqueAddress: org.apache.pekko.cluster.UniqueAddress.type =
24+
org.apache.pekko.cluster.UniqueAddress
25+
type ClusterSettings = org.apache.pekko.cluster.ClusterSettings
26+
object ClusterEvent {
27+
val InitialStateAsEvents =
28+
org.apache.pekko.cluster.ClusterEvent.InitialStateAsEvents
29+
type MemberEvent = org.apache.pekko.cluster.ClusterEvent.MemberEvent
30+
type MemberJoined = org.apache.pekko.cluster.ClusterEvent.MemberJoined
31+
val MemberJoined: org.apache.pekko.cluster.ClusterEvent.MemberJoined.type =
32+
org.apache.pekko.cluster.ClusterEvent.MemberJoined
33+
type MemberWeaklyUp = org.apache.pekko.cluster.ClusterEvent.MemberWeaklyUp
34+
val MemberWeaklyUp
35+
: org.apache.pekko.cluster.ClusterEvent.MemberWeaklyUp.type =
36+
org.apache.pekko.cluster.ClusterEvent.MemberWeaklyUp
37+
type MemberUp = org.apache.pekko.cluster.ClusterEvent.MemberUp
38+
val MemberUp: org.apache.pekko.cluster.ClusterEvent.MemberUp.type =
39+
org.apache.pekko.cluster.ClusterEvent.MemberUp
40+
type MemberLeft = org.apache.pekko.cluster.ClusterEvent.MemberLeft
41+
val MemberLeft: org.apache.pekko.cluster.ClusterEvent.MemberLeft.type =
42+
org.apache.pekko.cluster.ClusterEvent.MemberLeft
43+
type MemberExited = org.apache.pekko.cluster.ClusterEvent.MemberExited
44+
val MemberExited: org.apache.pekko.cluster.ClusterEvent.MemberExited.type =
45+
org.apache.pekko.cluster.ClusterEvent.MemberExited
46+
type MemberRemoved = org.apache.pekko.cluster.ClusterEvent.MemberRemoved
47+
val MemberRemoved
48+
: org.apache.pekko.cluster.ClusterEvent.MemberRemoved.type =
49+
org.apache.pekko.cluster.ClusterEvent.MemberRemoved
50+
type UnreachableMember =
51+
org.apache.pekko.cluster.ClusterEvent.UnreachableMember
52+
val UnreachableMember
53+
: org.apache.pekko.cluster.ClusterEvent.UnreachableMember.type =
54+
org.apache.pekko.cluster.ClusterEvent.UnreachableMember
55+
type ReachableMember = org.apache.pekko.cluster.ClusterEvent.ReachableMember
56+
val ReachableMember
57+
: org.apache.pekko.cluster.ClusterEvent.ReachableMember.type =
58+
org.apache.pekko.cluster.ClusterEvent.ReachableMember
59+
type MemberPreparingForShutdown =
60+
org.apache.pekko.cluster.ClusterEvent.MemberPreparingForShutdown
61+
val MemberPreparingForShutdown
62+
: org.apache.pekko.cluster.ClusterEvent.MemberPreparingForShutdown.type =
63+
org.apache.pekko.cluster.ClusterEvent.MemberPreparingForShutdown
64+
type MemberReadyForShutdown =
65+
org.apache.pekko.cluster.ClusterEvent.MemberReadyForShutdown
66+
val MemberReadyForShutdown
67+
: org.apache.pekko.cluster.ClusterEvent.MemberReadyForShutdown.type =
68+
org.apache.pekko.cluster.ClusterEvent.MemberReadyForShutdown
69+
type MemberDowned = org.apache.pekko.cluster.ClusterEvent.MemberDowned
70+
val MemberDowned: org.apache.pekko.cluster.ClusterEvent.MemberDowned.type =
71+
org.apache.pekko.cluster.ClusterEvent.MemberDowned
72+
type ClusterDomainEvent =
73+
org.apache.pekko.cluster.ClusterEvent.ClusterDomainEvent
74+
type SeenChanged = privates.SeenChanged
75+
object SeenChanged {
76+
def unapply(event: SeenChanged) =
77+
privates.SeenChanged.unapply(event)
78+
}
79+
type ReachabilityChanged = privates.ReachabilityChanged
80+
object ReachabilityChanged {
81+
def unapply(event: ReachabilityChanged) =
82+
privates.ReachabilityChanged.unapply(event)
83+
}
84+
}
85+
type JoinConfigCompatChecker =
86+
org.apache.pekko.cluster.JoinConfigCompatChecker
87+
val JoinConfigCompatChecker
88+
: org.apache.pekko.cluster.JoinConfigCompatChecker.type =
89+
org.apache.pekko.cluster.JoinConfigCompatChecker
90+
type ConfigValidation = org.apache.pekko.cluster.ConfigValidation
91+
type DowningProvider = org.apache.pekko.cluster.DowningProvider
92+
val Valid = org.apache.pekko.cluster.Valid
93+
}
94+
95+
package object remote {
96+
object artery {
97+
type ThisActorSystemQuarantinedEvent =
98+
org.apache.pekko.remote.artery.ThisActorSystemQuarantinedEvent
99+
}
100+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.apache.pekko.cluster
2+
3+
import org.apache.pekko.util.Version
4+
5+
package object privates {
6+
type SeenChanged = org.apache.pekko.cluster.ClusterEvent.SeenChanged
7+
object SeenChanged {
8+
def unapply(event: SeenChanged) =
9+
org.apache.pekko.cluster.ClusterEvent.SeenChanged.unapply(event)
10+
}
11+
type ReachabilityChanged =
12+
org.apache.pekko.cluster.ClusterEvent.ReachabilityChanged
13+
object ReachabilityChanged {
14+
def unapply(event: ReachabilityChanged) =
15+
org.apache.pekko.cluster.ClusterEvent.ReachabilityChanged.unapply(event)
16+
}
17+
type Reachability = org.apache.pekko.cluster.Reachability
18+
19+
object Member {
20+
def apply(
21+
uniqueAddress: UniqueAddress,
22+
roles: Set[String],
23+
appVersion: Version
24+
): Member =
25+
org.apache.pekko.cluster.Member(uniqueAddress, roles, appVersion)
26+
}
27+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package akka.cluster
2+
3+
package object sharding {
4+
5+
type ClusterSharding = org.apache.pekko.cluster.sharding.ClusterSharding
6+
val ClusterSharding: org.apache.pekko.cluster.sharding.ClusterSharding.type =
7+
org.apache.pekko.cluster.sharding.ClusterSharding
8+
type ShardCoordinator = org.apache.pekko.cluster.sharding.ShardCoordinator
9+
val ShardCoordinator
10+
: org.apache.pekko.cluster.sharding.ShardCoordinator.type =
11+
org.apache.pekko.cluster.sharding.ShardCoordinator
12+
val ShardRegion: org.apache.pekko.cluster.sharding.ShardRegion.type =
13+
org.apache.pekko.cluster.sharding.ShardRegion
14+
type ClusterShardingSettings =
15+
org.apache.pekko.cluster.sharding.ClusterShardingSettings
16+
val ClusterShardingSettings
17+
: org.apache.pekko.cluster.sharding.ClusterShardingSettings.type =
18+
org.apache.pekko.cluster.sharding.ClusterShardingSettings
19+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package akka
2+
3+
package object stream {
4+
@deprecated("The Materializer now has all methods the ActorMaterializer used to have", "Akka 2.6.0")
5+
type ActorMaterializer = org.apache.pekko.stream.ActorMaterializer
6+
type Materializer = org.apache.pekko.stream.Materializer
7+
val Materializer: org.apache.pekko.stream.Materializer.type =
8+
org.apache.pekko.stream.Materializer
9+
type Shape = org.apache.pekko.stream.Shape
10+
type Graph[A <: Shape, B] = org.apache.pekko.stream.Graph[A, B]
11+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package akka.stream
2+
3+
package object scaladsl {
4+
type Flow[A, B, C] = org.apache.pekko.stream.scaladsl.Flow[A, B, C]
5+
type Source[A, B] = org.apache.pekko.stream.scaladsl.Source[A, B]
6+
type Sink[A, B] = org.apache.pekko.stream.scaladsl.Sink[A, B]
7+
type RunnableGraph[A] = org.apache.pekko.stream.scaladsl.RunnableGraph[A]
8+
val Keep: org.apache.pekko.stream.scaladsl.Keep.type =
9+
org.apache.pekko.stream.scaladsl.Keep
10+
}

0 commit comments

Comments
 (0)