示例#1
0
        public static CassandraJob GetJob(CassandraContext db, int hide_time_sec)
        {
loop:
            dynamic job = null;

            for (int i = 0; i < 1000; i++)
            {
                var jobs = db.ExecuteQuery(SelectCQL_Main(1000)).ToArray();
                var mx   = jobs.Length < 1000 ? jobs.Length - 1 : 1000;
                if (mx == -1)
                {
                    break;
                }
                job = jobs[rnd.Value.Next(mx)];
                if (job["hidden_till"] < ToUnixTime(DateTimeOffset.UtcNow))
                {
                    break;
                }
            }
            if (job != null)
            {
                var myID = Guid.NewGuid();
                var ret  = new CassandraJob(job, myID);
                db.ExecuteNonQuery(HideRowCQL_Trans(ret.GetID(), ret.GetAckID()));
                var cnt     = db.ExecuteQuery(SelectCQL_Trans(ret.GetID(), 1000)).ToArray();
                var counter = cnt.First()["count"];
                if (counter > 1)
                {
                    db.ExecuteNonQuery(DeleteRowCQL_Trans(ret.GetID()));
                    goto loop;
                }
                if (counter == 0)
                {
                    goto loop;
                }

                db.ExecuteNonQuery(HideRowCQL_Main2(ret.GetID(), hide_time_sec, ret.GetLogic(), ret.GetCommand()));

                return(ret);
            }
            else
            {
                return(null);
            }
        }
示例#2
0
        public static CassandraJob GetJob(CassandraContext db, int hide_time_sec)
        {
            loop:
            dynamic job = null;
            for (int i = 0; i < 1000; i++)
            {
                var jobs = db.ExecuteQuery(SelectCQL_Main(1000)).ToArray();
                var mx = jobs.Length < 1000 ? jobs.Length - 1 : 1000;
                if (mx == -1)
                    break;
                job = jobs[rnd.Value.Next(mx)];
                if (job["hidden_till"] < ToUnixTime(DateTimeOffset.UtcNow))
                    break;
            }
            if (job != null)
            {
                var myID = Guid.NewGuid();
                var ret = new CassandraJob(job, myID);
                db.ExecuteNonQuery(HideRowCQL_Trans(ret.GetID(), ret.GetAckID()));
                var cnt = db.ExecuteQuery(SelectCQL_Trans(ret.GetID(), 1000)).ToArray();
                var counter = cnt.First()["count"];
                if (counter > 1)
                {
                    db.ExecuteNonQuery(DeleteRowCQL_Trans(ret.GetID()));
                    goto loop;
                }
                if (counter == 0)
                    goto loop;

                db.ExecuteNonQuery(HideRowCQL_Main2(ret.GetID(), hide_time_sec,ret.GetLogic(),ret.GetCommand()));

                return ret;
            }
            else
                return null;
        }
示例#3
0
 public static void DeleteJob(CassandraContext db, CassandraJob job)
 {
     db.ExecuteNonQuery(DeleteRowCQL_Main((job as CassandraJob).GetID()));
     db.ExecuteNonQuery(DeleteRowCQL_Trans((job as CassandraJob).GetID()));
 }
示例#4
0
 public static void DeleteJob(CassandraContext db, CassandraJob job)
 {
     db.ExecuteNonQuery(DeleteRowCQL_Main((job as CassandraJob).GetID()));
        db.ExecuteNonQuery(DeleteRowCQL_Trans((job as CassandraJob).GetID()));
 }