Giriş
Şu satırı dahil ederiz
import com.hazelcast.client.impl.spi.impl.ClientPartitionServiceImpl;
Kalıtım şöyle
ClientPartitionService
  ClientPartitionServiceImpl
public final class ClientPartitionServiceImpl implements ClientPartitionService {
  private final HazelcastClientInstanceImpl client;
  private final ILogger logger;
  private final AtomicReference<PartitionTable> partitionTable =
    new AtomicReference<>(new PartitionTable(null, -1, new Int2ObjectHashMap<>()));
  private final AtomicInteger partitionCount = new AtomicInteger(0);
  ...
}getPartitionCount metodu
Kod şöyle.
@Override
public int getPartitionCount() {
  return partitionCount.get();
}getPartitionId metodu
Kod şöyle. Bu metod ClientProxy tarafından kullanılır
invokeOnPartitionOwner metodu@Overridepublic int getPartitionId(@Nonnull Data key) {int pc = getPartitionCount();if (pc == 0) {// Partition count can not be zero for the sync mode.// On the sync mode, we are waiting for the first connection to be established.// We are initializing the partition count with // the value coming from the server with authentication.// This exception is used only for async mode client.throw new HazelcastClientOfflineException();}int hash = key.getPartitionHash();return HashUtil.hashToIndex(hash, pc);}
Kod şöyle. Belirtilen partitionId'ye sahip UUID bulunur. Bu UUID ile connection bulunur ve gönderilir.
@Override
public boolean invokeOnPartitionOwner(ClientInvocation invocation, int partitionId) {
  UUID partitionOwner = partitionService.getPartitionOwner(partitionId);
  if (partitionOwner == null) {
    if (invocationLogger.isFinestEnabled()) {
      invocationLogger.finest("Partition owner is not assigned yet");
    }
    return false;
  }
  return invokeOnTarget(invocation, partitionOwner);
}
Hiç yorum yok:
Yorum Gönder