package com.hubspot.imap.utils;

import java.lang.ref.SoftReference;

import io.netty.util.internal.AppendableCharSequence;

public class SoftReferencedAppendableCharSequence {
  private SoftReference<AppendableCharSequence> reference;

  private final int defaultResponseBufferSize;

  public SoftReferencedAppendableCharSequence(int defaultResponseBufferSize) {
    this.defaultResponseBufferSize = defaultResponseBufferSize;
    this.reference = new SoftReference<>(newCharSeq());
  }

  public AppendableCharSequence get() {
    AppendableCharSequence sequence = reference.get();
    if (sequence == null) {
      sequence = newCharSeq();
    }

    reference = new SoftReference<>(sequence);

    return sequence;
  }

  private AppendableCharSequence newCharSeq() {
    return new AppendableCharSequence(defaultResponseBufferSize);
  }
}