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 public class CTDBResponseEntry
{ {
[XmlAttribute] [XmlAttribute]
public string id { get; set; } public long id { get; set; }
[XmlAttribute] [XmlAttribute]
public string crc32 { get; set; } public string crc32 { get; set; }
[XmlAttribute] [XmlAttribute]

View File

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

View File

@@ -15,11 +15,11 @@ namespace CUETools.CTDB
public bool canRecover; public bool canRecover;
public CDRepairFix repair; public CDRepairFix repair;
public HttpStatusCode httpStatus; public HttpStatusCode httpStatus;
public string id; public long id;
public CDImageLayout toc; public CDImageLayout toc;
public string hasParity; 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.syndrome = syndrome;
this.id = id; this.id = id;

View File

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