1 21 22 package org.continuent.sequoia.controller.virtualdatabase.protocol; 23 24 import java.io.Serializable ; 25 import java.util.LinkedList ; 26 27 import org.continuent.hedera.common.Member; 28 import org.continuent.sequoia.controller.loadbalancer.AbstractLoadBalancer; 29 import org.continuent.sequoia.controller.virtualdatabase.DistributedVirtualDatabase; 30 31 39 public class FlushGroupCommunicationMessages 40 extends DistributedVirtualDatabaseMessage 41 { 42 private static final long serialVersionUID = 468790279514578158L; 43 44 private long failedControllerId; 45 46 52 public FlushGroupCommunicationMessages(long id) 53 { 54 failedControllerId = id; 55 } 56 57 61 public Object handleMessageSingleThreaded(DistributedVirtualDatabase dvdb, 62 Member sender) 63 { 64 LinkedList totalOrderQueue = dvdb.getTotalOrderQueue(); 65 synchronized (totalOrderQueue) 66 { 67 totalOrderQueue.addLast(this); 68 } 69 return null; 70 } 71 72 79 public Serializable handleMessageMultiThreaded( 80 DistributedVirtualDatabase dvdb, Member sender, 81 Object handleMessageSingleThreadedResult) 82 { 83 AbstractLoadBalancer loadBalancer = dvdb.getRequestManager() 84 .getLoadBalancer(); 85 loadBalancer.waitForTotalOrder(this, true); 86 loadBalancer.removeObjectFromAndNotifyTotalOrderQueue(this); 87 return Boolean.TRUE; 88 } 89 90 93 public boolean equals(Object obj) 94 { 95 if (!(obj instanceof FlushGroupCommunicationMessages)) 96 return false; 97 98 FlushGroupCommunicationMessages fgcm = (FlushGroupCommunicationMessages) obj; 99 return failedControllerId == fgcm.failedControllerId; 100 } 101 102 } 103 | Popular Tags |