/// <summary> /// Read Entry from the database. /// </summary> /// <param name="qr">A QueryResult object that is created by performing a query</param> /// <param name="cdEntry">out parameter - CDEntry object</param> /// <returns></returns> public string Read(QueryResult qr, out CDEntry cdEntry) { Debug.Assert(qr != null); cdEntry = null; StringCollection coll = null; StringBuilder builder = new StringBuilder(FreeDBHelper.Commands.CMD_READ); builder.Append("+"); builder.Append(qr.Category); builder.Append("+"); builder.Append(qr.Discid); //make call try { coll = Call(builder.ToString()); } catch (Exception ex) { string msg = "Error performing cddb read."; Exception newex = new Exception(msg, ex); throw newex; } // check if results came back if (coll.Count < 0) { string msg = "No results returned from cddb read."; Exception ex = new Exception(msg, null); throw ex; } string code = GetCode(coll[0]); if (code == ResponseCodes.CODE_INVALID) { string msg = "Unable to process results for cddb read. Returned Data: " + coll[0]; Exception ex = new Exception(msg, null); throw ex; } switch (code) { case ResponseCodes.CODE_500: return ResponseCodes.CODE_500; case ResponseCodes.CODE_401: // entry not found case ResponseCodes.CODE_402: // server error case ResponseCodes.CODE_403: // Database entry is corrupt case ResponseCodes.CODE_409: // No handshake return code; case ResponseCodes.CODE_210: // good { coll.RemoveAt(0); // remove the 210 cdEntry = new CDEntry(coll); return ResponseCodes.CODE_210; } default: return ResponseCodes.CODE_500; } }
/// <summary> /// Read Entry from the database. /// </summary> /// <param name="qr">A QueryResult object that is created by performing a query</param> /// <param name="cdEntry">out parameter - CDEntry object</param> /// <returns></returns> public string Read(QueryResult qr, out CDEntry cdEntry) { Debug.Assert(qr != null); cdEntry = null; StringCollection coll = null; StringBuilder builder = new StringBuilder(FreeDBHelper.Commands.CMD_READ); builder.Append("+"); builder.Append(qr.Category); builder.Append("+"); builder.Append(qr.Discid); //make call try { coll = Call(builder.ToString()); } catch (Exception ex) { string msg = "Error performing cddb read."; Exception newex = new Exception(msg, ex); throw newex; } // check if results came back if (coll.Count < 0) { string msg = "No results returned from cddb read."; Exception ex = new Exception(msg, null); throw ex; } string code = GetCode(coll[0]); if (code == ResponseCodes.CODE_INVALID) { string msg = "Unable to process results for cddb read. Returned Data: " + coll[0]; Exception ex = new Exception(msg, null); throw ex; } switch (code) { case ResponseCodes.CODE_500: return(ResponseCodes.CODE_500); case ResponseCodes.CODE_401: // entry not found case ResponseCodes.CODE_402: // server error case ResponseCodes.CODE_403: // Database entry is corrupt case ResponseCodes.CODE_409: // No handshake return(code); case ResponseCodes.CODE_210: // good { coll.RemoveAt(0); // remove the 210 cdEntry = new CDEntry(coll); return(ResponseCodes.CODE_210); } default: return(ResponseCodes.CODE_500); } }