Change socket options type from immutable.Traversable to Traversable
The problem with `immutable.Traversable` is that it doesn't allow the use of `Seq.apply` for socket options, since `Seq` is aliased to `scala.collection.Seq` and not `scala.collection.immutable.Seq` in `package object scala`. Even though technically nicer `immutable.Traversable` therefore hinders usability of the API, for a benefit that we don't consider worth the cost. Conflicts: akka-io/src/main/scala/akka/io/TcpConnection.scala
This commit is contained in:
parent
a53848edfa
commit
ba922fa2d7
5 changed files with 10 additions and 9 deletions
|
|
@ -132,11 +132,11 @@ object Tcp extends ExtensionKey[TcpExt] {
|
||||||
|
|
||||||
case class Connect(remoteAddress: InetSocketAddress,
|
case class Connect(remoteAddress: InetSocketAddress,
|
||||||
localAddress: Option[InetSocketAddress] = None,
|
localAddress: Option[InetSocketAddress] = None,
|
||||||
options: immutable.Traversable[SocketOption] = Nil) extends Command
|
options: Traversable[SocketOption] = Nil) extends Command
|
||||||
case class Bind(handler: ActorRef,
|
case class Bind(handler: ActorRef,
|
||||||
endpoint: InetSocketAddress,
|
endpoint: InetSocketAddress,
|
||||||
backlog: Int = 100,
|
backlog: Int = 100,
|
||||||
options: immutable.Traversable[SocketOption] = Nil) extends Command
|
options: Traversable[SocketOption] = Nil) extends Command
|
||||||
case class Register(handler: ActorRef) extends Command
|
case class Register(handler: ActorRef) extends Command
|
||||||
case object Unbind extends Command
|
case object Unbind extends Command
|
||||||
|
|
||||||
|
|
@ -185,7 +185,7 @@ object Tcp extends ExtensionKey[TcpExt] {
|
||||||
case class RegisterOutgoingConnection(channel: SocketChannel)
|
case class RegisterOutgoingConnection(channel: SocketChannel)
|
||||||
case class RegisterServerSocketChannel(channel: ServerSocketChannel)
|
case class RegisterServerSocketChannel(channel: ServerSocketChannel)
|
||||||
case class RegisterIncomingConnection(channel: SocketChannel, handler: ActorRef,
|
case class RegisterIncomingConnection(channel: SocketChannel, handler: ActorRef,
|
||||||
options: immutable.Traversable[SocketOption]) extends Command
|
options: Traversable[SocketOption]) extends Command
|
||||||
case class Retry(command: Command, retriesLeft: Int) { require(retriesLeft >= 0) }
|
case class Retry(command: Command, retriesLeft: Int) { require(retriesLeft >= 0) }
|
||||||
case object ChannelConnectable
|
case object ChannelConnectable
|
||||||
case object ChannelAcceptable
|
case object ChannelAcceptable
|
||||||
|
|
|
||||||
|
|
@ -100,8 +100,8 @@ abstract class TcpConnection(val selector: ActorRef,
|
||||||
|
|
||||||
// AUXILIARIES and IMPLEMENTATION
|
// AUXILIARIES and IMPLEMENTATION
|
||||||
|
|
||||||
/** use in subclasses to start the common machinery above once a channel is connected */
|
/** used in subclasses to start the common machinery above once a channel is connected */
|
||||||
def completeConnect(commander: ActorRef, options: immutable.Traversable[SocketOption]): Unit = {
|
def completeConnect(commander: ActorRef, options: Traversable[SocketOption]): Unit = {
|
||||||
options.foreach(_.afterConnect(channel.socket))
|
options.foreach(_.afterConnect(channel.socket))
|
||||||
|
|
||||||
commander ! Connected(
|
commander ! Connected(
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ class TcpIncomingConnection(_selector: ActorRef,
|
||||||
_channel: SocketChannel,
|
_channel: SocketChannel,
|
||||||
_tcp: TcpExt,
|
_tcp: TcpExt,
|
||||||
handler: ActorRef,
|
handler: ActorRef,
|
||||||
options: immutable.Traversable[SocketOption])
|
options: Traversable[SocketOption])
|
||||||
extends TcpConnection(_selector, _channel, _tcp) {
|
extends TcpConnection(_selector, _channel, _tcp) {
|
||||||
|
|
||||||
context.watch(handler) // sign death pact
|
context.watch(handler) // sign death pact
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ class TcpListener(selector: ActorRef,
|
||||||
backlog: Int,
|
backlog: Int,
|
||||||
bindCommander: ActorRef,
|
bindCommander: ActorRef,
|
||||||
settings: TcpExt#Settings,
|
settings: TcpExt#Settings,
|
||||||
options: immutable.Traversable[SocketOption]) extends Actor with ActorLogging {
|
options: Traversable[SocketOption]) extends Actor with ActorLogging {
|
||||||
|
|
||||||
context.watch(handler) // sign death pact
|
context.watch(handler) // sign death pact
|
||||||
val channel = {
|
val channel = {
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ class TcpOutgoingConnection(_selector: ActorRef,
|
||||||
commander: ActorRef,
|
commander: ActorRef,
|
||||||
remoteAddress: InetSocketAddress,
|
remoteAddress: InetSocketAddress,
|
||||||
localAddress: Option[InetSocketAddress],
|
localAddress: Option[InetSocketAddress],
|
||||||
options: immutable.Traversable[SocketOption])
|
options: Traversable[SocketOption])
|
||||||
extends TcpConnection(_selector, TcpOutgoingConnection.newSocketChannel(), _tcp) {
|
extends TcpConnection(_selector, TcpOutgoingConnection.newSocketChannel(), _tcp) {
|
||||||
|
|
||||||
context.watch(commander) // sign death pact
|
context.watch(commander) // sign death pact
|
||||||
|
|
@ -34,11 +34,12 @@ class TcpOutgoingConnection(_selector: ActorRef,
|
||||||
else {
|
else {
|
||||||
selector ! RegisterOutgoingConnection(channel)
|
selector ! RegisterOutgoingConnection(channel)
|
||||||
context.become(connecting(commander, options))
|
context.become(connecting(commander, options))
|
||||||
|
Seq(1,2,3)
|
||||||
}
|
}
|
||||||
|
|
||||||
def receive: Receive = PartialFunction.empty
|
def receive: Receive = PartialFunction.empty
|
||||||
|
|
||||||
def connecting(commander: ActorRef, options: immutable.Traversable[SocketOption]): Receive = {
|
def connecting(commander: ActorRef, options: Traversable[SocketOption]): Receive = {
|
||||||
case ChannelConnectable ⇒
|
case ChannelConnectable ⇒
|
||||||
try {
|
try {
|
||||||
val connected = channel.finishConnect()
|
val connected = channel.finishConnect()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue