Package com.barchart.feed.base.provider

Source Code of com.barchart.feed.base.provider.VarBook

/**
* Copyright (C) 2011-2013 Barchart, Inc. <http://www.barchart.com/>
*
* All rights reserved. Licensed under the OSI BSD License.
*
* http://www.opensource.org/licenses/bsd-license.php
*/
package com.barchart.feed.base.provider;

import static com.barchart.feed.base.provider.MarketConst.NULL_BOOK_ENTRY;

import java.util.List;

import com.barchart.feed.api.model.data.Book;
import com.barchart.feed.api.model.meta.Instrument;
import com.barchart.feed.base.book.api.MarketBook;
import com.barchart.feed.base.book.api.MarketBookEntry;
import com.barchart.feed.base.book.api.MarketDoBook;
import com.barchart.feed.base.book.api.MarketDoBookEntry;
import com.barchart.feed.base.book.enums.UniBookResult;
import com.barchart.util.anno.Mutable;
import com.barchart.util.anno.ThreadSafe;
import com.barchart.util.value.api.Time;
import com.barchart.util.values.api.PriceValue;
import com.barchart.util.values.api.SizeValue;
import com.barchart.util.values.api.TimeValue;
import com.barchart.util.values.provider.ValueBuilder;

@Mutable
@ThreadSafe(rule = "use in runSafe() only")
public final class VarBook extends UniBook<MarketBook> implements MarketDoBook {

  private long millisUTC;
 
  protected volatile MarketBookEntry lastEntry = MarketConst.NULL_BOOK_ENTRY;
 
  public VarBook(final Instrument instrument, final Book.Type type,
      final SizeValue size, final PriceValue step) {
    super(instrument, type, size, step);
  }

  @Override
  public final UniBookResult setEntry(final MarketDoBookEntry entry) {
    lastEntry = entry.freeze();
    return make(entry);
  }

  @Override
  public final MarketBookEntry[] entries(final Book.Side side) {
    return entriesFor(side);
  }

  @Override
  public final DefBook freeze() {
    return new DefBook(instrument, time(), entries(Book.Side.BID),
        entries(Book.Side.ASK), lastEntry);
  }

  @Override
  public TimeValue time() {
    return ValueBuilder.newTime(millisUTC);
  }

  @Override
  public final void setTime(final TimeValue time) {
    millisUTC = time.asMillisUTC();
  }

  @Override
  public final boolean isFrozen() {
    return false;
  }

  @Override
  public final MarketBookEntry last() {
    final DefBookEntry entry = lastEntry();
    return entry == null ? NULL_BOOK_ENTRY : entry;
  }

  @Override
  public final MarketBookEntry top(final Book.Side side) {
    final MarketDoBookEntry entry = topFor(side);
    return entry == null ? NULL_BOOK_ENTRY : entry;
  }

  /* #################################### */

  @Override
  public Instrument instrument() {
    return instrument;
  }
 
  @Override
  public PriceValue priceGap() {
    throw new UnsupportedOperationException("UNUSED");
  }

  @Override
  public final SizeValue[] sizes(final Book.Side side) {
    throw new UnsupportedOperationException("UNUSED");
  }

  @Override
  public PriceValue priceTop(final Book.Side side) {
    throw new UnsupportedOperationException("UNUSED");
  }

  @Override
  public SizeValue sizeTop(final Book.Side side) {
    throw new UnsupportedOperationException("UNUSED");
  }

  @Override
  public UniBookResult setSnapshot(final MarketDoBookEntry[] entries) {
    throw new UnsupportedOperationException("UNUSED");
  }

  @Override
  public List<Entry> entryList(Book.Side side) {
    throw new UnsupportedOperationException("UNUSED");
  }

  @Override
  public Top top() {
    throw new UnsupportedOperationException("UNUSED");
  }

  @Override
  public Entry lastBookUpdate() {
    throw new UnsupportedOperationException("UNUSED");
  }

  @Override
  public Time updated() {
    throw new UnsupportedOperationException("UNUSED");
  }

}
TOP

Related Classes of com.barchart.feed.base.provider.VarBook

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.