Preparing for next version of CTDB

This commit is contained in:
chudov
2011-10-30 23:39:20 +00:00
parent b84f1de118
commit a9ca6e2137
4 changed files with 39 additions and 19 deletions

View File

@@ -7,7 +7,7 @@ namespace CUETools.CTDB
public class CTDBResponseEntry
{
[XmlAttribute]
public string id { get; set; }
public long id { get; set; }
[XmlAttribute]
public string crc32 { get; set; }
[XmlAttribute]

View File

@@ -232,13 +232,24 @@ namespace CUETools.CTDB
if (this.QueryExceptionStatus != WebExceptionStatus.Success &&
(this.QueryExceptionStatus != WebExceptionStatus.ProtocolError || this.QueryResponseStatus != HttpStatusCode.NotFound))
return this.DBStatus;
DBEntry confirm = this.MatchingEntry;
if (confirm != null) confidence = 1;
int npar = AccurateRipVerify.maxNpar;
var parity = verify.AR.GetParity(npar);
DoSubmit(confidence, quality, artist, title, barcode, false, confirm, parity, npar);
var confirms = this.MatchingEntries;
if (confirms.Count > 0)
{
confidence = 1;
foreach (var confirm in confirms)
{
subResult = null;
DoSubmit(confidence, quality, artist, title, barcode, false, confirm, parity, npar);
if (subResult == "parity needed")
DoSubmit(confidence, quality, artist, title, barcode, true, confirm, parity, npar);
}
return subResult;
}
DoSubmit(confidence, quality, artist, title, barcode, false, null, parity, npar);
if (subResult == "parity needed")
DoSubmit(confidence, quality, artist, title, barcode, true, confirm, parity, npar);
DoSubmit(confidence, quality, artist, title, barcode, true, null, parity, npar);
return subResult;
}
@@ -271,6 +282,13 @@ namespace CUETools.CTDB
{
files = new UploadFile[0];
}
long maxId = 0;
foreach (var e in this.entries)
{
maxId = Math.Max(maxId, e.id);
}
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(urlbase + "/submit2.php");
req.Proxy = proxy;
req.UserAgent = this.userAgent;
@@ -280,7 +298,8 @@ namespace CUETools.CTDB
if (upload)
form.Add("parityfile", "1");
if (confirm != null)
form.Add("confirmid", confirm.id);
form.Add("confirmid", confirm.id.ToString());
form.Add("maxid", maxId.ToString());
form.Add("toc", toc.ToString());
form.Add("crc32", ((int)verify.CRC).ToString());
form.Add("trackcrcs", verify.TrackCRCs);
@@ -437,17 +456,18 @@ namespace CUETools.CTDB
}
}
public DBEntry MatchingEntry
public List<DBEntry> MatchingEntries
{
get
{
if (this.QueryExceptionStatus != WebExceptionStatus.Success)
return null;
foreach (DBEntry entry in this.Entries)
if (entry.toc.ToString() == this.toc.ToString() && !entry.hasErrors)
return entry;
return null;
}
get
{
var res = new List<DBEntry>();
if (this.QueryExceptionStatus != WebExceptionStatus.Success)
return res;
foreach (DBEntry entry in this.Entries)
if (entry.toc.ToString() == this.toc.ToString() && !entry.hasErrors)
res.Add(entry);
return res;
}
}
public void Init(AccurateRipVerify ar)

View File

@@ -15,11 +15,11 @@ namespace CUETools.CTDB
public bool canRecover;
public CDRepairFix repair;
public HttpStatusCode httpStatus;
public string id;
public long id;
public CDImageLayout toc;
public string hasParity;
public DBEntry(ushort[,] syndrome, int conf, int stride, uint crc, string id, CDImageLayout toc, string hasParity)
public DBEntry(ushort[,] syndrome, int conf, int stride, uint crc, long id, CDImageLayout toc, string hasParity)
{
this.syndrome = syndrome;
this.id = id;

View File

@@ -1027,7 +1027,7 @@ namespace JDP
&& cueSheet.ArVerify.ARStatus == null
&& cueSheet.ArVerify.WorstConfidence() >= 2
&& (cueSheet.AccurateRipId == null || AccurateRipVerify.CalculateAccurateRipId(cueSheet.TOC) == cueSheet.AccurateRipId)
&& cueSheet.CTDB.MatchingEntry == null
&& cueSheet.CTDB.MatchingEntries.Count == 0
&& (cueSheet.CTDB.QueryExceptionStatus == WebExceptionStatus.Success
|| (cueSheet.CTDB.QueryExceptionStatus == WebExceptionStatus.ProtocolError && cueSheet.CTDB.QueryResponseStatus == HttpStatusCode.NotFound)
)