// 락이 없는 함수로 푸시 말고는 쓰기 동작이 없어야 한다. // Stop이 불리고 나서도 로그가 푸시될 수 있는 것을 감안한다(이런 로그는 Stop에서 처리). private Int64 PushImpl(String type, Object log, Boolean doSerialize) { try { if (CheckAvailablePush(type, log) == false) { return(INVALID_SEQUENCE); } DateTime now = Now.NowDateTime(); Int64 sequence = _sequenceGenerator.Generate(); Boolean successPush = _logQueue.Push(new Log() { Sequence = sequence, LogType = type, LogObject = log, TimeStamp = Now.TimestampSec(now), TimeStampNS = Now.TimestampNS(now), IsRawString = doSerialize }); if (successPush) { Watcher.IncrementPushLogCount(); return(sequence); } return(INVALID_SEQUENCE); } catch (Exception exception) { ErrorCounter.RaiseError($"Fail Push: {exception.Message}"); return(INVALID_SEQUENCE); } }
private void CreateSequenceGenerator() { _sequenceGenerator = new SequenceGenerator(Now.TimestampSec(StartTime)); }