Domanda

Ho un attore remoto (client), che sta registrando con un altro attore (server) a distanza e poi annullare la registrazione (con un gancio di arresto). Tuttavia, anche se il server riprende la de-registrazione, l'attuale sender proprietà è un oggetto canale diverso ; così nei miei log del server che ho:

  

Registered new client [scala.actors.Channel@158e282]; supporting 1 clients
  De-registered client [scala.actors.Channel@1caf0b6]; supporting 1 clients

Come è possibile determinare (sul lato server) che questo era lo stesso attore cliente che originariamente registrata con me? Ovviamente ho potuto permeare ogni cliente con la propria UUID ma mi chiedo se c'è un modo più semplice?

È stato utile?

Soluzione

Da una discussione sulla mailing list degli utenti Scala, sembra che questo non sia immediatamente possibile, senza l'utilizzo di un qualche tipo alternativo di identificatore di client (come UUID). Se si invia il self di riferimento da parte del cliente nel vostro oggetto di registrazione, si otterrà un errore di ObjectNotSerializable.

Altri suggerimenti

esplicitamente aggiungere il mittente al messaggio. Utilizzare RemoteActor.select per ottenere uno scala.actors.remote.Proxy. Utilizzare il metodo toString per identificare il mittente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top