2011-11-04 20 views
5

Piszę rozproszoną aplikację w Scali, która używa aktorów Akka. Mam pewne struktury danych, które moi zdalni aktorzy szczęśliwie serializują, przesyłają druty i odsyłają bez mojej dodatkowej pomocy.Serializacja w Scala/Akka

Do rejestrowania chciałbym serializować klasę case zawierającą te obiekty. Czytałem dokumentację serializacyjną na akka project site, ale zastanawiam się, czy istnieje łatwiejszy sposób na zrobienie tego, ponieważ Akka najwyraźniej wie jak serializować te obiekty już.


Edycja 05 listopada 2011w odpowiedzi na komentarz Wiktora

Aplikacja jest rozprowadzany silnik Proces decyzyjny Markowa.

Próbuję serializacji jedną z tych rzeczy:

case class POMDPIteration(
    observations: Set[(AgentRef, State)], 
    rewards: Set[(AgentRef, Float)], 
    actions: Set[(AgentRef, Action)], 
    state: State 
) 

Oto definicja AgentRef:

case class AgentRef(
    clientManagerID: Int, 
    agentNumber: Int, 
    agentType: AgentType 
) 

Action i AgentType są po prostu wpisać aliasy Symbol

Aby utrzymać ta krótsza definicja państwa jest tutaj: https://github.com/ConnorDoyle/EnMAS/blob/master/src/main/scala/org/enmas/pomdp/State.scala

Pomyślnie wysyłam klasy przypadków zawierające obiekt typu State wśród zdalnych aktorów bez problemu. Zastanawiam się tylko, czy istnieje sposób na uzyskanie rutynowych procedur, które Akka wykorzystuje do moich własnych celów.

Niejawna serializacja Akki podczas przekazywania wiadomości jest łatwa, ale z dokumentacji wynika, że ​​pytanie Akka o wersję serializowaną jest jednoznaczne. Być może źle zrozumiałem dokumentację lub brakuje mi czegoś ważnego.

+0

Czy masz jakiś przykładowy kod do zilustrowania problemu? –

+0

@ViktorKlang - dodałem trochę kodu i trochę rozszerzyłem pytanie. Dzięki za spojrzenie! –

Odpowiedz