internal static bool SignMessagesToSend(string lockId)
{
var until = DateTime.Now.AddMinutes(1);
var sql = "UPDATE TOP (@Top) [Messaging.Messages] SET LockId = @LockId, LockedUntil = @LockedUntil WHERE LockId = @LockId OR LockId IS NULL OR LockedUntil < @Now";
int rows = 0;
using (var proc = SenseNet.ContentRepository.Storage.Data.DataProvider.CreateDataProcedure(sql))
{
proc.CommandType = System.Data.CommandType.Text;
var topPrm = DataProvider.CreateParameter();
topPrm.ParameterName = "@Top";
topPrm.DbType = DbType.Int32;
topPrm.Value = Configuration.TakeCount;
proc.Parameters.Add(topPrm);
var lockIdPrm = DataProvider.CreateParameter();
lockIdPrm.ParameterName = "@LockId";
lockIdPrm.DbType = DbType.String;
lockIdPrm.Size = 500;
lockIdPrm.Value = lockId;
proc.Parameters.Add(lockIdPrm);
var lockedUntilPrm = DataProvider.CreateParameter();
lockedUntilPrm.ParameterName = "@LockedUntil";
lockedUntilPrm.DbType = DbType.DateTime;
lockedUntilPrm.Value = until;
proc.Parameters.Add(lockedUntilPrm);
var nowPrm = DataProvider.CreateParameter();
nowPrm.ParameterName = "@Now";
nowPrm.DbType = DbType.DateTime;
nowPrm.Value = DateTime.Now;
proc.Parameters.Add(nowPrm);
rows = proc.ExecuteNonQuery();
}
return rows > 0;
}
internal static IEnumerable<Message> SelectSignedMessages(DataHandler context, string lockId)