#!/usr/bin/env python3
# lognestmonster Copyright (c) 2019 Joshua 'joshuas3' Stockin
# .
# This file is part of lognestmonster.
# lognestmonster is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# lognestmonster is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with lognestmonster. If not, see .
import sys
import os
import time
import ctypes
import random
def exists(f):
	return os.path.isfile(f) or os.path.isdir(f)
def milli():
	return int(round(time.time() * 1000))
def enc(string):
	return string.encode("utf-8")
def ushort(n):
	return ctypes.c_ushort(n)
def uchar(n):
	return ctypes.c_ubyte(n)
def ulonglong(n):
	return ctypes.c_ulonglong(n)
if __name__ == "__main__":
	try:
		out = sys.argv[1]
	except:
		print("must provide an out location")
		exit(1)
	version = uchar(1)
	queue_time = ulonglong(milli())
	open_statement = uchar(0)
	close_statement = uchar(1)
	open_event = uchar(2)
	close_event = uchar(3)
	verbosity = uchar(0)
	ts = ulonglong(milli())
	tag = enc("INFO")
	tag_len = uchar(len(tag))
	message = enc("Hello, World!")
	message_len = ushort(len(message))
	start = milli()
	try:
		f = open(out, "wb")
		f.write(version)
		f.write(queue_time)
		f.write(open_event)
		f.write(open_statement)
		f.write(ts)
		f.write(verbosity)
		f.write(tag_len)
		f.write(tag)
		f.write(message_len)
		f.write(message)
		f.write(close_statement)
		f.write(close_event)
	finally:
		f.close()
		print("file written with size {0}MB in {1} seconds".format(round(os.stat(out).st_size/1000)/1000, (milli()-start)/1000))