Open-source multiplayer game server compatible with the RuneScape client
https://www.openrs2.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.9 KiB
81 lines
2.9 KiB
package org.openrs2.protocol
|
|
|
|
import com.google.inject.AbstractModule
|
|
import com.google.inject.PrivateModule
|
|
import com.google.inject.TypeLiteral
|
|
import com.google.inject.multibindings.Multibinder
|
|
import org.openrs2.buffer.BufferModule
|
|
import org.openrs2.crypto.CryptoModule
|
|
import org.openrs2.protocol.js5.downstream.Js5RemoteDownstream
|
|
import org.openrs2.protocol.login.downstream.ClientOutOfDateCodec
|
|
import org.openrs2.protocol.login.downstream.IpLimitCodec
|
|
import org.openrs2.protocol.login.downstream.Js5OkCodec
|
|
import org.openrs2.protocol.login.downstream.LoginDownstream
|
|
import org.openrs2.protocol.login.downstream.ServerFullCodec
|
|
import org.openrs2.protocol.login.upstream.InitCrossDomainConnectionCodec
|
|
import org.openrs2.protocol.login.upstream.InitGameConnectionCodec
|
|
import org.openrs2.protocol.login.upstream.InitJaggrabConnectionCodec
|
|
import org.openrs2.protocol.login.upstream.InitJs5RemoteConnectionCodec
|
|
import org.openrs2.protocol.login.upstream.LoginUpstream
|
|
import org.openrs2.protocol.login.upstream.RequestWorldListCodec
|
|
import org.openrs2.protocol.world.downstream.WorldListDownstream
|
|
import org.openrs2.protocol.world.downstream.WorldListResponseCodec
|
|
|
|
public object ProtocolModule : AbstractModule() {
|
|
public override fun configure() {
|
|
install(BufferModule)
|
|
install(CryptoModule)
|
|
|
|
bindProtocol(
|
|
LoginUpstream::class.java,
|
|
InitGameConnectionCodec::class.java,
|
|
InitJs5RemoteConnectionCodec::class.java,
|
|
InitJaggrabConnectionCodec::class.java,
|
|
RequestWorldListCodec::class.java,
|
|
InitCrossDomainConnectionCodec::class.java
|
|
)
|
|
|
|
bindProtocol(
|
|
LoginDownstream::class.java,
|
|
ClientOutOfDateCodec::class.java,
|
|
ServerFullCodec::class.java,
|
|
IpLimitCodec::class.java
|
|
)
|
|
|
|
bindProtocol(
|
|
Js5RemoteDownstream::class.java,
|
|
Js5OkCodec::class.java,
|
|
ClientOutOfDateCodec::class.java,
|
|
ServerFullCodec::class.java,
|
|
IpLimitCodec::class.java
|
|
)
|
|
|
|
bindProtocol(
|
|
WorldListDownstream::class.java,
|
|
WorldListResponseCodec::class.java
|
|
)
|
|
}
|
|
|
|
private fun bindProtocol(
|
|
annotation: Class<out Annotation>,
|
|
vararg codecs: Class<out PacketCodec<*>>
|
|
) {
|
|
install(object : PrivateModule() {
|
|
override fun configure() {
|
|
val binder = Multibinder.newSetBinder(binder(), PACKET_CODEC_TYPE_LITERAL)
|
|
for (codec in codecs) {
|
|
binder.addBinding().to(codec)
|
|
}
|
|
|
|
bind(Protocol::class.java)
|
|
.annotatedWith(annotation)
|
|
.to(Protocol::class.java)
|
|
|
|
expose(Protocol::class.java)
|
|
.annotatedWith(annotation)
|
|
}
|
|
})
|
|
}
|
|
|
|
private val PACKET_CODEC_TYPE_LITERAL = object : TypeLiteral<PacketCodec<*>>() {}
|
|
}
|
|
|