/**
 * Copyright 2016 the WHATAP project authors. All rights reserved.
 * Use of this source code is governed by a license that
 * can be found in the LICENSE file.
 */

require('./seedrandom');

var Long    = require('long'),
    rand    = new Math.seedrandom(Date.now(), {entropy : true});

var KeyGen = {
    next : function () {
        // NOTE: 53bit 초과 정수에서 parseInt는 정밀도 손실이 발생. JS Number 호환성 유지를 위해
        // Number를 반환하되, 식별자(txid/step_id) 직렬화 시에는 BigInt(num).toString()을 써서
        // 송신측(TX_HTTPC writeLong) 바이트값과 LogSinkPack @txid 문자열을 일치시켜야 함.
        return parseInt((Long.fromBits(rand.int32(), rand.int32())).toString());
    },
    getMtid : function () {
        return Long.fromBits(rand.int32(), rand.int32());
    }
};

module.exports = KeyGen;