Package com.barchart.feed.ddf.message.provider

Source Code of com.barchart.feed.ddf.message.provider.DF_21_Snap

/**
* Copyright (C) 2011-2012 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.ddf.message.provider;

import static com.barchart.util.ascii.ASCII.COMMA;

import java.nio.ByteBuffer;

import com.barchart.feed.ddf.message.api.DDF_MarketSnapshot;
import com.barchart.feed.ddf.message.api.DDF_MessageVisitor;
import com.barchart.feed.ddf.message.enums.DDF_MessageType;
import com.barchart.feed.ddf.util.HelperDDF;
import com.barchart.feed.ddf.util.enums.DDF_Fraction;
import com.barchart.util.values.api.PriceValue;
import com.barchart.util.values.api.SizeValue;

class DF_21_Snap extends BaseMarket implements DDF_MarketSnapshot {

  @Override
  public <Result, Param> Result accept(
      final DDF_MessageVisitor<Result, Param> visitor, final Param param) {
    return visitor.visit(this, param);
  }

  DF_21_Snap() {
    super(DDF_MessageType.SNAP_FORE_EXCH); // 21
  }

  DF_21_Snap(final DDF_MessageType messageType) {
    super(messageType);
  }

  // //////////////////////////////////////

  protected long priceAsk = HelperDDF.DDF_EMPTY;
  protected long priceBid = HelperDDF.DDF_EMPTY;

  protected long priceOpen = HelperDDF.DDF_EMPTY;
  protected long priceOpen2 = HelperDDF.DDF_EMPTY;

  protected long priceHigh = HelperDDF.DDF_EMPTY;
  protected long priceLow = HelperDDF.DDF_EMPTY;

  protected long priceClose = HelperDDF.DDF_EMPTY;
  protected long priceClose2 = HelperDDF.DDF_EMPTY;

  protected long priceSettle = HelperDDF.DDF_EMPTY;

  /** last trade price for this day */
  protected long priceLast = HelperDDF.DDF_EMPTY;

  /** last trade price for past day */
  protected long priceLastPrevious = HelperDDF.DDF_EMPTY;

  protected long sizeInterest = HelperDDF.DDF_EMPTY;

  protected long sizeVolume = HelperDDF.DDF_EMPTY;
  protected long sizeVolumePrevious = HelperDDF.DDF_EMPTY;

  // //////////////////////////////////////

  @Override
  public PriceValue getPriceAsk() {
    return HelperDDF.newPriceDDF(priceAsk, getFraction());
  }

  @Override
  public PriceValue getPriceBid() {
    return HelperDDF.newPriceDDF(priceBid, getFraction());
  }

  @Override
  public PriceValue getPriceClose2() {
    return HelperDDF.newPriceDDF(priceClose2, getFraction());
  }

  @Override
  public PriceValue getPriceLast() {
    return HelperDDF.newPriceDDF(priceLast, getFraction());
  }

  @Override
  public PriceValue getPriceLastPrevious() {
    return HelperDDF.newPriceDDF(priceLastPrevious, getFraction());
  }

  @Override
  public PriceValue getPriceOpen2() {
    return HelperDDF.newPriceDDF(priceOpen2, getFraction());
  }

  @Override
  public PriceValue getPriceSettle() {
    return HelperDDF.newPriceDDF(priceSettle, getFraction());
  }

  @Override
  public SizeValue getSizeVolumePrevious() {
    return HelperDDF.newSizeDDF(sizeVolumePrevious);
  }

  @Override
  public PriceValue getPriceClose() {
    return HelperDDF.newPriceDDF(priceClose, getFraction());
  }

  @Override
  public PriceValue getPriceHigh() {
    return HelperDDF.newPriceDDF(priceHigh, getFraction());
  }

  @Override
  public SizeValue getSizeInterest() {
    return HelperDDF.newSizeDDF(sizeInterest);
  }

  @Override
  public PriceValue getPriceLow() {
    return HelperDDF.newPriceDDF(priceLow, getFraction());
  }

  @Override
  public PriceValue getPriceOpen() {
    return HelperDDF.newPriceDDF(priceOpen, getFraction());
  }

  @Override
  public SizeValue getSizeVolume() {
    return HelperDDF.newSizeDDF(sizeVolume);
  }

  /*
   * <soh><rec><symbol>,<subrec><stx><base><exch><delay>(,)(<spread>)||
   *
   * <open>,<high>,<low>,<last>,<bid>,<ask>,
   *
   * <open2>,<prev>,<close>,<close2>,<settle>,
   *
   * <prev volume>,<open interest>,<cur volume>,
   *
   * ||<day><session><etx>||<time stamp>
   */

  @Override
  protected final void encodeDelay(final ByteBuffer buffer) {
    super.encodeDelay(buffer);
    buffer.put(COMMA); // (,)
  }

  @Override
  protected final void decodeDelay(final ByteBuffer buffer) {
    super.decodeDelay(buffer);
    check(buffer.get(), COMMA); // (,)
  }

  @Override
  protected final void encodeBody(final ByteBuffer buffer) {
    final DDF_Fraction frac = getFraction();
    //
    HelperDDF.decimalEncode(priceOpen, frac, buffer, COMMA); // <open>,
    HelperDDF.decimalEncode(priceHigh, frac, buffer, COMMA); // <high>,
    HelperDDF.decimalEncode(priceLow, frac, buffer, COMMA); // <low>,
    HelperDDF.decimalEncode(priceLast, frac, buffer, COMMA); // <last>,
    HelperDDF.decimalEncode(priceBid, frac, buffer, COMMA); // <bid>,
    HelperDDF.decimalEncode(priceAsk, frac, buffer, COMMA); // <ask>,
    HelperDDF.decimalEncode(priceOpen2, frac, buffer, COMMA); // <open2>,
    HelperDDF.decimalEncode(priceLastPrevious, frac, buffer, COMMA); // <prev>,
    HelperDDF.decimalEncode(priceClose, frac, buffer, COMMA); // <close>,
    HelperDDF.decimalEncode(priceClose2, frac, buffer, COMMA); // <close2>,
    HelperDDF.decimalEncode(priceSettle, frac, buffer, COMMA); // <settle>,
    //
    HelperDDF.longEncode(sizeVolumePrevious, buffer, COMMA); // <prev
                                  // volume>,
    HelperDDF.longEncode(sizeInterest, buffer, COMMA); // <open interest>,
    HelperDDF.longEncode(sizeVolume, buffer, COMMA); // <cur volume>,
  }

  @Override
  protected final void decodeBody(final ByteBuffer buffer) {
    final DDF_Fraction frac = getFraction();
    //
    priceOpen = HelperDDF.decimalDecode(frac, buffer, COMMA); //
    priceHigh = HelperDDF.decimalDecode(frac, buffer, COMMA); //
    priceLow = HelperDDF.decimalDecode(frac, buffer, COMMA); //
    priceLast = HelperDDF.decimalDecode(frac, buffer, COMMA); //
    priceBid = HelperDDF.decimalDecode(frac, buffer, COMMA); //
    priceAsk = HelperDDF.decimalDecode(frac, buffer, COMMA); //
    priceOpen2 = HelperDDF.decimalDecode(frac, buffer, COMMA); //
    priceLastPrevious = HelperDDF.decimalDecode(frac, buffer, COMMA); //
    priceClose = HelperDDF.decimalDecode(frac, buffer, COMMA); //
    priceClose2 = HelperDDF.decimalDecode(frac, buffer, COMMA); //
    priceSettle = HelperDDF.decimalDecode(frac, buffer, COMMA); //
    //
    sizeVolumePrevious = HelperDDF.longDecode(buffer, COMMA); //
    sizeInterest = HelperDDF.longDecode(buffer, COMMA); //
    sizeVolume = HelperDDF.longDecode(buffer, COMMA); //
  }

  @Override
  protected void appedFields(final StringBuilder text) {

    super.appedFields(text);

    text.append("priceAsk : ");
    text.append(getPriceAsk());
    text.append("\n");

    text.append("priceBid : ");
    text.append(getPriceBid());
    text.append("\n");

    // TODO

  }

}
TOP

Related Classes of com.barchart.feed.ddf.message.provider.DF_21_Snap

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.