Skip to content

Commit 72bda56

Browse files
committed
Merge pull request #19 from kiequoo/master
Allow connection state to be queried
2 parents 4892c34 + ed5240c commit 72bda56

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

src/main/scala/com/thenewmotion/akka/rabbitmq/ChannelActor.scala

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ import ConnectionActor.ProvideChannel
88
* @author Yaroslav Klymko
99
*/
1010
object ChannelActor {
11-
private[rabbitmq] sealed trait State
12-
private[rabbitmq] case object Disconnected extends State
13-
private[rabbitmq] case object Connected extends State
11+
sealed trait State
12+
case object Disconnected extends State
13+
case object Connected extends State
14+
15+
case object GetState
1416

1517
private[rabbitmq] sealed trait Data
1618
private[rabbitmq] case class InMemory(queue: Queue[OnChannel] = Queue()) extends Data
@@ -133,6 +135,11 @@ class ChannelActor(setupChannel: (Channel, ActorRef) => Any)
133135
goto(Disconnected) using InMemory()
134136
}
135137
}
138+
whenUnhandled {
139+
case Event(GetState, _) =>
140+
sender ! stateName
141+
stay
142+
}
136143
onTransition {
137144
case Disconnected -> Connected => log.info("{} connected", self.path)
138145
case Connected -> Disconnected => log.warning("{} disconnected", self.path)

src/test/scala/com/thenewmotion/akka/rabbitmq/ChannelActorSpec.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,13 @@ class ChannelActorSpec extends ActorSpec with Mockito {
104104
there was one(onChannel).apply(channel)
105105
state mustEqual disconnected(last)
106106
}
107+
"respond to GetState message" in new TestScope {
108+
actorRef ! GetState
109+
expectMsg(Disconnected)
110+
actorRef.setState(Connected, Connected(channel))
111+
actorRef ! GetState
112+
expectMsg(Connected)
113+
}
107114
}
108115

109116
private abstract class TestScope extends ActorScope {

0 commit comments

Comments
 (0)