Skip to content

Commit

Permalink
refactor: improve broadcast example implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
FilippoVissani committed Dec 14, 2023
1 parent 4ff8bd3 commit c53e88b
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 72 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,15 @@ package it.unibo.jakta.agents.distributed.broadcast

import it.unibo.jakta.agents.bdi.Agent
import it.unibo.jakta.agents.bdi.Jakta
import it.unibo.jakta.agents.bdi.actions.ExternalRequest
import it.unibo.jakta.agents.bdi.actions.impl.AbstractExternalAction
import it.unibo.jakta.agents.bdi.beliefs.Belief
import it.unibo.jakta.agents.bdi.environment.Environment
import it.unibo.jakta.agents.bdi.executionstrategies.ExecutionStrategy
import it.unibo.jakta.agents.bdi.goals.ActInternally
import it.unibo.jakta.agents.bdi.messages.Message
import it.unibo.jakta.agents.bdi.messages.Tell
import it.unibo.jakta.agents.bdi.plans.Plan
import it.unibo.jakta.agents.bdi.plans.PlanLibrary
import it.unibo.jakta.agents.distributed.broadcast.Common.env
import it.unibo.jakta.agents.distributed.dmas.DMas

fun main() {
val broadcastAction = object : AbstractExternalAction("broadcast", 2) {
override fun action(request: ExternalRequest) {
val type = request.arguments[0].castToAtom()
val message = request.arguments[1].castToStruct()
when (type.value) {
"tell" -> broadcastMessage(Message(request.sender, Tell, message))
"achieve" -> broadcastMessage(
Message(request.sender, it.unibo.jakta.agents.bdi.messages.Achieve, message),
)
}
}
}

val alice = Agent.of(
name = "alice",
planLibrary = PlanLibrary.of(
Expand All @@ -40,11 +23,5 @@ fun main() {
),
)

val env = Environment.of(
externalActions = mapOf(
broadcastAction.signature.name to broadcastAction,
),
)

DMas.withEmbeddedBroker(ExecutionStrategy.oneThreadPerAgent(), env, listOf(alice), emptyList()).start()
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,15 @@ package it.unibo.jakta.agents.distributed.broadcast

import it.unibo.jakta.agents.bdi.Agent
import it.unibo.jakta.agents.bdi.Jakta
import it.unibo.jakta.agents.bdi.actions.ExternalRequest
import it.unibo.jakta.agents.bdi.actions.impl.AbstractExternalAction
import it.unibo.jakta.agents.bdi.beliefs.Belief
import it.unibo.jakta.agents.bdi.environment.Environment
import it.unibo.jakta.agents.bdi.executionstrategies.ExecutionStrategy
import it.unibo.jakta.agents.bdi.goals.ActInternally
import it.unibo.jakta.agents.bdi.messages.Message
import it.unibo.jakta.agents.bdi.messages.Tell
import it.unibo.jakta.agents.bdi.plans.Plan
import it.unibo.jakta.agents.bdi.plans.PlanLibrary
import it.unibo.jakta.agents.distributed.broadcast.Common.env
import it.unibo.jakta.agents.distributed.dmas.DMas

fun main() {
val broadcastAction = object : AbstractExternalAction("broadcast", 2) {
override fun action(request: ExternalRequest) {
val type = request.arguments[0].castToAtom()
val message = request.arguments[1].castToStruct()
when (type.value) {
"tell" -> broadcastMessage(Message(request.sender, Tell, message))
"achieve" -> broadcastMessage(
Message(request.sender, it.unibo.jakta.agents.bdi.messages.Achieve, message),
)
}
}
}

val bob = Agent.of(
name = "bob",
planLibrary = PlanLibrary.of(
Expand All @@ -40,11 +23,5 @@ fun main() {
),
)

val env = Environment.of(
externalActions = mapOf(
broadcastAction.signature.name to broadcastAction,
),
)

DMas.withEmbeddedBroker(ExecutionStrategy.oneThreadPerAgent(), env, listOf(bob), emptyList()).start()
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,17 @@ package it.unibo.jakta.agents.distributed.broadcast

import it.unibo.jakta.agents.bdi.Agent
import it.unibo.jakta.agents.bdi.Jakta
import it.unibo.jakta.agents.bdi.actions.ExternalRequest
import it.unibo.jakta.agents.bdi.actions.impl.AbstractExternalAction
import it.unibo.jakta.agents.bdi.environment.Environment
import it.unibo.jakta.agents.bdi.events.Event
import it.unibo.jakta.agents.bdi.executionstrategies.ExecutionStrategy
import it.unibo.jakta.agents.bdi.goals.Achieve
import it.unibo.jakta.agents.bdi.goals.Act
import it.unibo.jakta.agents.bdi.goals.ActInternally
import it.unibo.jakta.agents.bdi.messages.Message
import it.unibo.jakta.agents.bdi.messages.Tell
import it.unibo.jakta.agents.bdi.plans.Plan
import it.unibo.jakta.agents.bdi.plans.PlanLibrary
import it.unibo.jakta.agents.distributed.broadcast.Common.env
import it.unibo.jakta.agents.distributed.dmas.DMas

fun main() {
val broadcastAction = object : AbstractExternalAction("broadcast", 2) {
override fun action(request: ExternalRequest) {
val type = request.arguments[0].castToAtom()
val message = request.arguments[1].castToStruct()
when (type.value) {
"tell" -> broadcastMessage(Message(request.sender, Tell, message))
"achieve" -> broadcastMessage(
Message(request.sender, it.unibo.jakta.agents.bdi.messages.Achieve, message),
)
}
}
}

val env = Environment.of(
externalActions = mapOf(
broadcastAction.signature.name to broadcastAction,
),
)

val sender = Agent.of(
name = "sender",
events = listOf(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package it.unibo.jakta.agents.distributed.broadcast

import it.unibo.jakta.agents.bdi.actions.ExternalRequest
import it.unibo.jakta.agents.bdi.actions.impl.AbstractExternalAction
import it.unibo.jakta.agents.bdi.environment.Environment
import it.unibo.jakta.agents.bdi.messages.Achieve
import it.unibo.jakta.agents.bdi.messages.Message
import it.unibo.jakta.agents.bdi.messages.Tell

object Common {
private val broadcastAction = object : AbstractExternalAction("broadcast", 2) {
override fun action(request: ExternalRequest) {
val type = request.arguments[0].castToAtom()
val message = request.arguments[1].castToStruct()
when (type.value) {
"tell" -> broadcastMessage(Message(request.sender, Tell, message))
"achieve" -> broadcastMessage(
Message(request.sender, Achieve, message),
)
}
}
}

val env = Environment.of(
externalActions = mapOf(
broadcastAction.signature.name to broadcastAction,
),
)
}

0 comments on commit c53e88b

Please sign in to comment.