Commit 7efe0e1f authored by Paul Asmuth's avatar Paul Asmuth
Browse files

basic SwapFile implementation

parent 6e94f548
Loading
Loading
Loading
Loading
+29 −3
Original line number Diff line number Diff line
@@ -7,12 +7,38 @@

package com.fnordmetric.enterprise

import java.io.RandomAccessFile
import java.io.File
import java.nio.ByteBuffer
import java.nio.ByteOrder

class SwapFile() {
class SwapFile(metric_key: MetricKey) {

  val file = new File(FnordMetric.CONFIG('swap_prefix),
    "fnord.txt")
  val file_name = "metric-" + metric_key.key +
    metric_key.mode + "-" + metric_key.flush_interval

  val file = new RandomAccessFile(new File(
    FnordMetric.CONFIG('swap_prefix), file_name), "rwd")

  val buffer = ByteBuffer.allocate(512)
  buffer.order(ByteOrder.BIG_ENDIAN)

  def put(time: Long, value: Double) : Unit = {
    val bvalue = java.lang.Double.doubleToLongBits(value)

    if (buffer.remaining < 18)
      flush

    buffer.putShort(0x1717)
    buffer.putLong(time)
    buffer.putLong(bvalue)
  }

  def flush : Unit = {
    file.seek(file.length)
    file.write(buffer.array)
    buffer.rewind
  }

}