Android Open Source - DistributedMemory Broadcast Message






From Project

Back to project page DistributedMemory.

License

The source code is released under:

Apache License

If you think the Android project DistributedMemory listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.faudroids.distributedmemory.network;
//from  w  w  w  . j  a  v  a2 s .co  m

import org.faudroids.distributedmemory.utils.Assert;

import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

public final class BroadcastMessage<T> {

  private final List<ConnectionHandler<T>> connectionHandlers = new LinkedList<>();
  private final List<T> messages = new LinkedList<>();

  private int ackCount = 0;
  private boolean messageSent = false;


  public BroadcastMessage(Collection<ConnectionHandler<T>> connectionHandlers, List<T> messages) {
    Assert.assertEquals(connectionHandlers.size(), messages.size(), "messages size must be equal to number of connections");
    this.connectionHandlers.addAll(connectionHandlers);
    this.messages.addAll(messages);
  }


  public BroadcastMessage(Collection<ConnectionHandler<T>> connectionHandlers, T message) {
    this.connectionHandlers.addAll(connectionHandlers);
    for (int i = 0; i < connectionHandlers.size(); ++i) messages.add(message);
  }


  /**
   * Forwards the message(s) to the connection handlers.
   */
  public void sendMessage() {
    if (messageSent) throw new IllegalStateException("message has already been sent");
    messageSent = true;
    for (int i = 0; i < messages.size(); ++i) {
      connectionHandlers.get(i).sendMessage(messages.get(i));
    }
  }


  /**
   * Call this method for every ack that has been received from a connection handler.
   * @return same as {@link #allAcksReceived()}.
   */
  public boolean onAckReceived() {
    if (!messageSent) throw new IllegalStateException("message has not been sent");
    Assert.assertTrue(ackCount < connectionHandlers.size(), "already received all acks");
    ++ackCount;
    return allAcksReceived();
  }


  /**
   * @return true if all acks for the last message have been received, false otherwise.
   */
  public boolean allAcksReceived() {
    return ackCount == connectionHandlers.size();
  }

}




Java Source Code List

org.faudroids.distributedmemory.ApplicationTest.java
org.faudroids.distributedmemory.app.AppModule.java
org.faudroids.distributedmemory.app.DistributedMemoryApplication.java
org.faudroids.distributedmemory.common.BaseActivity.java
org.faudroids.distributedmemory.common.BaseApplication.java
org.faudroids.distributedmemory.common.BaseListActivity.java
org.faudroids.distributedmemory.common.BaseService.java
org.faudroids.distributedmemory.common.CommonModule.java
org.faudroids.distributedmemory.common.Injector.java
org.faudroids.distributedmemory.core.Card.java
org.faudroids.distributedmemory.core.ClientGameListener.java
org.faudroids.distributedmemory.core.ClientGameManager.java
org.faudroids.distributedmemory.core.CoreModule.java
org.faudroids.distributedmemory.core.Device.java
org.faudroids.distributedmemory.core.Evaluation.java
org.faudroids.distributedmemory.core.GameSetupInfo.java
org.faudroids.distributedmemory.core.GameStateManager.java
org.faudroids.distributedmemory.core.GameState.java
org.faudroids.distributedmemory.core.HostGameListener.java
org.faudroids.distributedmemory.core.HostGameManager.java
org.faudroids.distributedmemory.core.HostGameStateManager.java
org.faudroids.distributedmemory.core.HostStateTransitionListener.java
org.faudroids.distributedmemory.core.HostStateTransition.java
org.faudroids.distributedmemory.core.MessageConstants.java
org.faudroids.distributedmemory.core.MessageReader.java
org.faudroids.distributedmemory.core.MessageWriter.java
org.faudroids.distributedmemory.core.Player.java
org.faudroids.distributedmemory.network.BroadcastMessage.java
org.faudroids.distributedmemory.network.ClientNetworkListener.java
org.faudroids.distributedmemory.network.ConnectionHandlerFactory.java
org.faudroids.distributedmemory.network.ConnectionHandler.java
org.faudroids.distributedmemory.network.HostInfo.java
org.faudroids.distributedmemory.network.HostNetworkListener.java
org.faudroids.distributedmemory.network.HostSocketHandler.java
org.faudroids.distributedmemory.network.JsonConnectionHandler.java
org.faudroids.distributedmemory.network.NetworkManager.java
org.faudroids.distributedmemory.network.NetworkModule.java
org.faudroids.distributedmemory.network.StringConnectionHandler.java
org.faudroids.distributedmemory.ui.AboutActivity.java
org.faudroids.distributedmemory.ui.BitmapCache.java
org.faudroids.distributedmemory.ui.ClientUtils.java
org.faudroids.distributedmemory.ui.GameActivity.java
org.faudroids.distributedmemory.ui.HelpActivity.java
org.faudroids.distributedmemory.ui.HelpDialogActivity.java
org.faudroids.distributedmemory.ui.HostGameActivity.java
org.faudroids.distributedmemory.ui.HostService.java
org.faudroids.distributedmemory.ui.JoinGameActivity.java
org.faudroids.distributedmemory.ui.LobbyActivity.java
org.faudroids.distributedmemory.ui.MainActivity.java
org.faudroids.distributedmemory.ui.QRCodeUtils.java
org.faudroids.distributedmemory.ui.StopServerBroadcastReceiver.java
org.faudroids.distributedmemory.ui.UiModule.java
org.faudroids.distributedmemory.utils.Assert.java
org.faudroids.distributedmemory.utils.NotificationUtils.java
org.faudroids.distributedmemory.utils.QRCodeEncoder.java
org.faudroids.distributedmemory.utils.ServiceUtils.java
org.faudroids.distributedmemory.utils.UtilsModule.java