public List<KeyValuePair<int, int>> PlChangesPosId(int version)
{
MpdResponse response = this.getConnection().Exec("plchangesposid", new string[] { version.ToString() });
if (response.IsError)
throw new MpdResponseException(response.ErrorCode, response.ErrorMessage);
if (response.Count % 2 != 0)
throw new InvalidMpdResponseException("Response to command plchangesposid contains an odd number of lines!");
List<KeyValuePair<int, int>> ret = new List<KeyValuePair<int, int>>();
for (int i = 0; i < response.Count; i += 2) {
KeyValuePair<string, string> posLine = response[i];
KeyValuePair<string, string> idLine = response[i + 1];
if ((posLine.Key == null) || (posLine.Value == null))
throw new InvalidMpdResponseException("Invalid format of line " + i + "!");
if ((idLine.Key == null) || (idLine.Value == null))
throw new InvalidMpdResponseException("Invalid format of line " + (i + 1) + "!");
if (!posLine.Key.Equals("cpos"))
throw new InvalidMpdResponseException("Line " + i + " does not start with \"cpos\"!");
if (!idLine.Key.Equals("Id"))
throw new InvalidMpdResponseException("Line " + (i + 1) + " does not start with \"Id\"!");
int tryPos = -1;
if (!int.TryParse(posLine.Value, out tryPos))
throw new InvalidMpdResponseException("Tag value on line " + i + " is not a number.");
int tryId = -1;
if (!int.TryParse(idLine.Value, out tryId))
throw new InvalidMpdResponseException("Tag value on line " + (i + 1) + " is not a number.");
ret.Add(new KeyValuePair<int, int>(tryPos, tryId));
}
return ret;
}