//-----------------------------------------------
// Vlákno pro ukládání dat z fronty do souboru
// ----------------------------------------------

#include <vcl.h>
#include <vector>
#include <list>
#pragma hdrstop

#include "saveLIST.h"
#include "Unit1.h"
#include "Static.h"
#pragma package(smart_init)

__fastcall savelist::savelist(bool CreateSuspended)
	: TThread(CreateSuspended)
{
	FreeOnTerminate = true;
}

void __fastcall savelist::UpdateCaption() {
	Form1->Memo1->Lines->Add(GetTime().TimeString()+"> "+Message);
}

//---------------------------------------------------------------------------
void __fastcall savelist::Execute()
{
FILE *savefile;
int lasttime, nowtime;
bool eof = false;			// Příznak konce ukladani
SYSTEMTIME d;
GetLocalTime(&d);
char buf[20];
paket prijat;

	// Vytvoreni souboru a jeho otevreni - zvlast binarni a textovy
	if (TEXT_FLAG) {
		if ((savefile = fopen(SAVE_PATH.t_str(),"w")) == NULL) {
			Message = "Nelze vytvořit soubor!";
			Synchronize(&UpdateCaption);
			Terminate();
		}
	} else {
		if ((savefile = fopen(SAVE_PATH.t_str(),"wb")) == NULL) {
			Message = "Nelze vytvořit soubor!";
			Synchronize(&UpdateCaption);
			Terminate();
		}
	}

	// Cyklus vlakna ...
	if (!Terminated) {
		Message = "Ukládám do " + SAVE_PATH + " ...";
		Synchronize(&UpdateCaption);
		while (!Terminated && !eof) {

			if (!fronta.empty()) {

				locker->Acquire();
				prijat = fronta.front();
				fronta.pop_front();
				locker->Release();

				fwrite(prijat.data,1,prijat.len,savefile);

			} else {

			}
		}
		fclose(savefile);
		Message = "Soubor uložen.";
		Synchronize(&UpdateCaption);
	}
}
//---------------------------------------------------------------------------
