3 * Copyright 2011 GRNET S.A. All rights reserved.
5 * Redistribution and use in source and binary forms, with or
6 * without modification, are permitted provided that the following
9 * 1. Redistributions of source code must retain the above
10 * copyright notice, this list of conditions and the following
13 * 2. Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials
16 * provided with the distribution.
18 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
19 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
22 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
25 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
26 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
31 * The views and conclusions contained in the software and
32 * documentation are those of the authors and should not be
33 * interpreted as representing official policies, either expressed
34 * or implied, of GRNET S.A.
36 package gr.grnet.aquarium.actor
38 import gr.grnet.aquarium.processor.actor.{ResourceProcessorActor, DispatcherActor}
39 import gr.grnet.aquarium.rest.actor.RESTActor
40 import gr.grnet.aquarium.user.actor.{UserActor, UserActorManager}
43 * Each actor plays one role. This is a one-to-one correspondance.
45 sealed abstract class ActorRole(val role: String, val actorType: Class[_ <: AquariumActor])
48 * The generic router/dispatcher.
50 case object DispatcherRole extends ActorRole("DispatcherRole", classOf[DispatcherActor]) {
55 * Processes user-related resource events.
57 case object ResourceProcessorRole extends ActorRole("ResourceProcessorRole", classOf[ResourceProcessorActor])
60 * REST request handler.
62 case object RESTRole extends ActorRole("RESTRole", classOf[RESTActor])
65 * Role for the actor that is responsible for user actor provisioning.
67 case object UserActorManagerRole extends ActorRole("UserActorManagerRole", classOf[UserActorManager])
70 * User-oriented business logic handler role.
72 case object UserActorRole extends ActorRole("UserActorRole", classOf[UserActor])