All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.ebeaninternal.server.cache.RemoteCacheEvent Maven / Gradle / Ivy

There is a newer version: 15.8.0
Show newest version
package io.ebeaninternal.server.cache;

import io.ebeaninternal.api.BinaryReadContext;
import io.ebeaninternal.api.BinaryWritable;
import io.ebeaninternal.api.BinaryWriteContext;

import java.io.DataOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * Cache events broadcast across the cluster.
 */
public final class RemoteCacheEvent implements BinaryWritable {

  private final boolean clearAll;
  private final List clearCaches;

  /**
   * Clear all the caches.
   */
  public RemoteCacheEvent(boolean clearAll) {
    this.clearAll = clearAll;
    this.clearCaches = null;
  }

  /**
   * Clear caches for the given bean type.
   */
  public RemoteCacheEvent(Class beanType) {
    this.clearAll = false;
    this.clearCaches = new ArrayList<>(1);
    this.clearCaches.add(beanType.getName());
  }

  /**
   * Create with the read options.
   */
  public RemoteCacheEvent(boolean clearAll, List beanTypes) {
    this.clearAll = clearAll;
    this.clearCaches = beanTypes;
  }

  public boolean isClearAll() {
    return clearAll;
  }

  public List getClearCaches() {
    return clearCaches;
  }

  @Override
  public String toString() {
    return "CacheEvent clearAll:" + clearAll + " caches:" + clearCaches;
  }

  public static RemoteCacheEvent readBinaryMessage(BinaryReadContext dataInput) throws IOException {
    boolean clearAll = dataInput.readBoolean();
    int size = dataInput.readInt();
    List clearCache = null;
    if (size > 0) {
      clearCache = new ArrayList<>(size);
      for (int i = 0; i < size; i++) {
        clearCache.add(dataInput.readUTF());
      }
    }
    return new RemoteCacheEvent(clearAll, clearCache);
  }

  @Override
  public void writeBinary(BinaryWriteContext out) throws IOException {
    DataOutputStream os = out.start(TYPE_CACHE);
    os.writeBoolean(clearAll);
    if (clearCaches == null) {
      os.writeInt(0);
    } else {
      os.writeInt(clearCaches.size());
      for (String cacheName : clearCaches) {
        os.writeUTF(cacheName);
      }
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy