/**
* CopyRight by Chinamobile
*
* MessageQueuesInterface.java
*/
package com.chinamobile.bcbsp.comm;
import java.util.concurrent.ConcurrentLinkedQueue;
/**
* The interface for Message Queues, which
* manages the message queues.
*
* @author
* @version
*/
public interface MessageQueuesInterface {
/**
* Add a message into the incoming message queue
* with the destination vertexID for index.
*
* @param dstVertexID
* @param msg
*/
public void incomeAMessage(String dstVertexID, BSPMessage msg);
/**
* Add a message into the outgoing message queue
* with the destination "WorkerManagerName:Port"
* for index.
*
* @param outgoingIndex
* @param msg
*/
public void outgoAMessage(String outgoingIndex, BSPMessage msg);
/**
* Remove and return the incomed message queue for
* dstVertexID as the destination.
*
* @param dstVertexID
* @return
* ConcurrentLinkedQueue<BSPMessage>
*/
public ConcurrentLinkedQueue<BSPMessage> removeIncomedQueue(String dstVertexID);
/**
* Get the current longest outgoing queue's index.
* If the outgoing queues are all empty, return null.
*
* @return
* String
*/
public String getMaxOutgoingQueueIndex();
/**
* Get the next outgoing queue's index.
* This method will be used for traversal of
* the outgoing queues' map looply.
* If the outgoing queues are all empty, return null.
*
* @return
*/
public String getNextOutgoingQueueIndex() throws Exception;
/**
* Remove and return the outgoing message queue for
* index as the queue's index.
*
* @param index
* @return
* ConcurrentLinkedQueue<BSPMessage>
*/
public ConcurrentLinkedQueue<BSPMessage> removeOutgoingQueue(String index);
/**
* Get the current longest incoming queue's index.
* If the incoming queues are all empty, return -1.
*
* @return
* int
*/
public String getMaxIncomingQueueIndex();
/**
* Remove and return the incoming message queue for
* dstVertexID as the queue's index.
*
* @param dstVertexID
* @return
* ConcurrentLinkedQueue<BSPMessage>
*/
public ConcurrentLinkedQueue<BSPMessage> removeIncomingQueue(String dstVertexID);
public int getIncomingQueueSize(String dstVertexID);
public int getOutgoingQueueSize(String index);
public void exchangeIncomeQueues();
public void clearAllQueues();
public void clearOutgoingQueues();
public void clearIncomingQueues();
public void clearIncomedQueues();
public int getOutgoingQueuesSize();
public int getIncomingQueuesSize();
public int getIncomedQueuesSize();
public void showMemoryInfo();
}