/.metadata/.plugins/org.eclipse.core.resources/.history/bf/005b5d9781a3001e1dff9ae635b3e1ee

https://bitbucket.org/fixpoint/connexion · #! · 50 lines · 44 code · 6 blank · 0 comment · 0 complexity · d5d75d5f7a35f097bdb3b3a8167a5494 MD5 · raw file

  1. package info.reflectionsofmind.connexion.platform.control.util;
  2. import info.reflectionsofmind.connexion.platform.control.stc.IServerToClientMessage;
  3. import info.reflectionsofmind.connexion.platform.control.stc.STCMessageCoder;
  4. import info.reflectionsofmind.connexion.platform.control.stc.message.MsgParticipationAccepted;
  5. import info.reflectionsofmind.connexion.transport.AbstractTransport;
  6. import info.reflectionsofmind.connexion.transport.ITransport.INode;
  7. import info.reflectionsofmind.connexion.util.convert.DecodingException;
  8. import java.util.concurrent.BlockingQueue;
  9. import java.util.concurrent.SynchronousQueue;
  10. private final class WaitForParticipationAccepted extends AbstractTransport.Listener
  11. {
  12. private final BlockingQueue<MsgParticipationAccepted> queue = new SynchronousQueue<MsgParticipationAccepted>();
  13. public MsgParticipationAccepted take()
  14. {
  15. try
  16. {
  17. return this.queue.take();
  18. }
  19. catch (final InterruptedException exception)
  20. {
  21. throw new RuntimeException(exception);
  22. }
  23. }
  24. @Override
  25. public void onPacket(final INode sender, final String contents)
  26. {
  27. try
  28. {
  29. final IServerToClientMessage message = STCMessageCoder.INSTANCE.decode(contents);
  30. if (message instanceof MsgParticipationAccepted)
  31. {
  32. this.queue.put((MsgParticipationAccepted) message);
  33. }
  34. }
  35. catch (final DecodingException exception)
  36. {
  37. throw new RuntimeException(exception);
  38. }
  39. catch (final InterruptedException exception)
  40. {
  41. throw new RuntimeException(exception);
  42. }
  43. }
  44. }