async Task ReadResponse(StreamSocket streamSocket, int responseId)
{
try
{
DataReader dataReader = new DataReader(streamSocket.InputStream);
dataReader.InputStreamOptions = InputStreamOptions.Partial;
bool isSocketOpen = true;
while (isSocketOpen)
{
bool isFinish = false;
string text = string.Empty;
while (!isFinish)
{
if (await dataReader.LoadAsync(65000) == 0)
{
isSocketOpen = false;
isFinish = true;
}
else
{
string s = dataReader.ReadString(dataReader.UnconsumedBufferLength);
text += s;
if (text.EndsWith(MPDKeyWords.Response.LINEBREAK))
{
isFinish = true;
}
}
}
if (isSocketOpen)
{
bool noidle = ParseResponse(streamSocket, text, responseId);
if (!password_confirmed) await SendResponse("ACK [3@0] {password} incorrect password\n", streamSocket);
bool suc = (noidle) ? await SendResponse(responseId, true) : await SendResponse(responseId);
if (!suc) isSocketOpen = false;
}
}
}
catch {
}
}