2013-03-31 3 views
2

Я пытаюсь подключить существующее приложение к платформе Play. Приложение использует библиотеку для передачи SMPP, которая уже реализована таким образом, что сообщения отправляются асинхронно (в отдельном потоке, который вызывает объект-слушатель при успешной передаче). Мне интересно, как использовать одну и ту же библиотеку и вернуть объект Promise, который возвращает результат веб-запросу Play при обновлении слушателя.Как реализовать объект Promise?

Все примеры, которые я видел, иллюстрируют, как это делается с использованием библиотеки воспроизведения WS или akka, которая заботится о выполнении работы над отдельным потоком. Если у меня уже есть такая реализация, которая делает это, как я объяснял выше, как мне просто интегрировать ее с Play?

ответ

2

Ваша библиотека передачи SMPP возвращает вам дескриптор, на котором вы можете зарегистрировать слушателей завершения, правильно? В этом случае вы должны быть в состоянии создать мост, как это:

val p = scala.concurrent.Promise[ResultType]() 
val handle = smpp.doit() // or whatever the method is called 
handle.onComplete(h => p.success(h.result)) // or p.complete if things can fail 
return p.future 

Затем полученное будущее может быть использованы для завершения воспроизведения действия Async.

Смежные вопросы