Как я могу определить удаленного актера? - PullRequest
4 голосов
/ 29 июня 2009

У меня есть удаленный субъект (клиент), который регистрируется на другом удаленном субъекте (сервере), а затем отменяет регистрацию (с помощью кнопки завершения работы). Однако, хотя сервер принимает отмену регистрации, фактическое свойство sender является другим объектом Channel ; поэтому в журналах моего сервера у меня есть:

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

Как я могу определить (на стороне сервера), что это был тот же клиентский актер, который первоначально был зарегистрирован у меня? Очевидно, я мог бы наполнить каждого клиента своим UUID, но мне интересно, есть ли более простой способ?

Ответы [ 2 ]

1 голос
/ 30 июня 2009

Из обсуждения в списке рассылки пользователей Scala, кажется, что это невозможно сразу без использования альтернативного идентификатора клиента (например, UUID) Если вы отправите ссылку self от клиента в объект регистрации, вы получите ошибку ObjectNotSerializable.

0 голосов
/ 15 июля 2010

Явно добавьте отправителя в ваше сообщение. Используйте RemoteActor.select, чтобы получить scala.actors.remote.Proxy. Используйте метод toString для идентификации отправителя.

...