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.common.exceptions.VirtualDatabaseStartingException; 29 import org.continuent.sequoia.controller.virtualdatabase.DistributedVirtualDatabase; 30 31 37 public class DistributedClosePersistentConnection 38 extends DistributedVirtualDatabaseMessage 39 { 40 private static final long serialVersionUID = -693544521730643721L; 41 private String login; 42 private long persistentConnectionId; 43 44 50 public DistributedClosePersistentConnection(String login, 51 long persistentConnectionId) 52 { 53 this.login = login; 54 this.persistentConnectionId = persistentConnectionId; 55 } 56 57 62 public final String getLogin() 63 { 64 return login; 65 } 66 67 72 public final long getPersistentConnectionId() 73 { 74 return persistentConnectionId; 75 } 76 77 81 public Object handleMessageSingleThreaded(DistributedVirtualDatabase dvdb, 82 Member sender) 83 { 84 if (!dvdb.isVirtualDatabaseStarted()) 85 return new VirtualDatabaseStartingException(); 86 87 LinkedList totalOrderQueue = dvdb.getTotalOrderQueue(); 88 synchronized (totalOrderQueue) 89 { 90 totalOrderQueue.addLast(this); 91 } 92 return this; 93 } 94 95 99 public Serializable handleMessageMultiThreaded( 100 DistributedVirtualDatabase dvdb, Member sender, 101 Object handleMessageSingleThreadedResult) 102 { 103 if (handleMessageSingleThreadedResult instanceof Exception ) 104 return (Serializable ) handleMessageSingleThreadedResult; 105 106 dvdb.getRequestManager().getLoadBalancer().waitForTotalOrder(this, true); 107 dvdb.getRequestManager().closePersistentConnection(login, 108 persistentConnectionId); 109 110 return null; 111 } 112 113 116 public boolean equals(Object obj) 117 { 118 if (obj instanceof DistributedClosePersistentConnection) 119 { 120 DistributedClosePersistentConnection other = (DistributedClosePersistentConnection) obj; 121 return persistentConnectionId == other.persistentConnectionId; 122 } 123 return false; 124 } 125 126 129 public int hashCode() 130 { 131 return (int) persistentConnectionId; 132 } 133 } 134 | Popular Tags |