2011-11-04 26 views
5

Sto scrivendo un'applicazione distribuita in Scala che utilizza gli attori Akka. Ho alcune strutture dati che i miei attori remoti serializzano allegramente, inviano tramite cavo e non sono serializzate senza alcun ulteriore aiuto da parte mia.Serializzazione in Scala/Akka

Per la registrazione Vorrei serializzare una classe di casi contenente questi oggetti. Ho letto i documenti di serializzazione sullo akka project site, ma mi chiedo se c'è un modo più semplice per farlo, dal momento che Akka a quanto pare sa come serializzare questi oggetti già.


Modifica 5 Nov 2011in risposta al commento di Viktor

L'applicazione è un motore di Markov decisione processo distribuito.

Sto cercando di serializzare una di queste cose:

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

qui è la definizione di AgentRef:

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

Action e AgentType sono solo digitare alias di Symbol

Per mantenere questo più breve, la definizione di Stato è qui: https://github.com/ConnorDoyle/EnMAS/blob/master/src/main/scala/org/enmas/pomdp/State.scala

Sto inviando con successo case history contenenti oggetto di tipo State tra attori remoti senza problemi. Mi sto solo chiedendo se c'è un modo per ottenere le routine di serializzazione che Akka usa per i miei scopi.

La serializzazione implicita di Akka quando si esegue il passaggio di messaggi è facile, ma dai documenti risulta che chiedere esplicitamente ad Akka una versione serializzata è difficile. Forse ho frainteso la documentazione, o mi manca qualcosa di importante.

+0

Avete qualche codice di esempio per illustrare il problema? –

+0

@ViktorKlang - Ho aggiunto del codice e ho ampliato un po 'la domanda. Grazie per aver guardato! –

risposta