예제 #1
0
파일: OutBox.cs 프로젝트: gonsovsky/job
        public Stream Read(IOutItem item)
        {
            var filename = ItemFile(item);

            return(new FileStream(
                       filename,
                       FileMode.Open
                       ));
        }
예제 #2
0
파일: OutBox.cs 프로젝트: gonsovsky/job
        private void SetFlag(IOutItem item, string flag)
        {
            var cmd = SqlConn.CreateCommand();

            cmd.CommandText =
                $@"
                   Update items set {flag} = julianday('now') where {Cols.Id} =  @{Cols.Id}
               ";
            cmd.Parameters.Add(Cols.Id, DbType.UInt32).Value = item.Id;
            cmd.ExecuteNonQuery();
        }
예제 #3
0
파일: OutBox.cs 프로젝트: gonsovsky/job
        public FileStream AddWrite(IOutItem item)
        {
            var filename = ItemFile(item);

            if (File.Exists(filename))
            {
                File.Delete(filename);
            }
            return(new FileStream(
                       filename,
                       FileMode.CreateNew
                       ));
        }
예제 #4
0
파일: OutBox.cs 프로젝트: gonsovsky/job
        public void AddRollback(IOutItem item)
        {
            var filename = ItemFile(item);

            if (File.Exists(filename))
            {
                File.Delete(filename);
            }

            var cmd = SqlConn.CreateCommand();

            cmd.CommandText =
                $@"
                   delete from items where {Cols.Id}  =  @{Cols.Id} 
               ";
            cmd.Parameters.Add(Cols.Id, DbType.UInt32).Value = item.Id;
            cmd.ExecuteNonQuery();
        }
예제 #5
0
파일: OutBox.cs 프로젝트: gonsovsky/job
 public string ItemFile(IOutItem item) =>
 Path.Combine(StorageFolder, item.Id.ToString() + ".txt");
예제 #6
0
파일: OutBox.cs 프로젝트: gonsovsky/job
 public void AddCommit(IOutItem item)
 {
     this.SetFlag(item, Cols.Commited);
     this.OnAddItem?.Invoke(this.Queue, item);
 }
예제 #7
0
파일: OutBox.cs 프로젝트: gonsovsky/job
 public void Fault(IOutItem item)
 {
     SetFlag(item, Cols.Faulted);
 }
예제 #8
0
파일: OutBox.cs 프로젝트: gonsovsky/job
 public void Deliver(IOutItem item)
 {
     SetFlag(item, Cols.Delivered);
 }
예제 #9
0
파일: OutBox.cs 프로젝트: gonsovsky/job
 public void Send(IOutItem item)
 {
     SetFlag(item, Cols.Sent);
 }