mirror of
https://github.com/Sarsoo/Spotify.NET.git
synced 2024-12-24 23:16:28 +00:00
Cleaning up after timeout
Proper Re-Use is now possible
This commit is contained in:
parent
f0290fa037
commit
234a522f8f
@ -44,6 +44,8 @@ namespace SpotifyAPI.Web.Auth
|
|||||||
authenticationWaitFlag.Set();
|
authenticationWaitFlag.Set();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
authentication.StartHttpServer(m_ListeningPort);
|
authentication.StartHttpServer(m_ListeningPort);
|
||||||
|
|
||||||
authentication.DoAuth();
|
authentication.DoAuth();
|
||||||
@ -51,8 +53,11 @@ namespace SpotifyAPI.Web.Auth
|
|||||||
authenticationWaitFlag.WaitOne(m_Timeout);
|
authenticationWaitFlag.WaitOne(m_Timeout);
|
||||||
if (spotifyWebApi == null)
|
if (spotifyWebApi == null)
|
||||||
throw new TimeoutException($"No valid response received for the last {m_Timeout.TotalSeconds} seconds");
|
throw new TimeoutException($"No valid response received for the last {m_Timeout.TotalSeconds} seconds");
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
authentication.StopHttpServer();
|
authentication.StopHttpServer();
|
||||||
|
}
|
||||||
|
|
||||||
return Task.FromResult(spotifyWebApi);
|
return Task.FromResult(spotifyWebApi);
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,6 @@ namespace SpotifyAPI.Web
|
|||||||
OutputStream.Flush();
|
OutputStream.Flush();
|
||||||
_inputStream = null;
|
_inputStream = null;
|
||||||
OutputStream = null;
|
OutputStream = null;
|
||||||
socket.Close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ParseRequest()
|
public void ParseRequest()
|
||||||
@ -219,27 +218,9 @@ namespace SpotifyAPI.Web
|
|||||||
_listener = new TcpListener(IPAddress.Any, Port);
|
_listener = new TcpListener(IPAddress.Any, Port);
|
||||||
_listener.Start();
|
_listener.Start();
|
||||||
|
|
||||||
using (HttpProcessor processor = new HttpProcessor(this))
|
_listener.BeginAcceptTcpClient(AcceptTcpConnection, _listener);
|
||||||
{
|
|
||||||
while (IsActive)
|
|
||||||
{
|
|
||||||
_listener.BeginAcceptTcpClient(ar =>
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
TcpListener listener = (TcpListener)ar.AsyncState;
|
|
||||||
var tcpCLient = listener.EndAcceptTcpClient(ar);
|
|
||||||
processor.Process(tcpCLient);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (ObjectDisposedException)
|
|
||||||
{
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
}, _listener);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (SocketException e)
|
catch (SocketException e)
|
||||||
{
|
{
|
||||||
if (e.ErrorCode != 10004) //Ignore 10004, which is thrown when the thread gets terminated
|
if (e.ErrorCode != 10004) //Ignore 10004, which is thrown when the thread gets terminated
|
||||||
@ -247,6 +228,28 @@ namespace SpotifyAPI.Web
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void AcceptTcpConnection(IAsyncResult ar)
|
||||||
|
{
|
||||||
|
TcpListener listener = (TcpListener)ar.AsyncState;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var tcpCLient = listener.EndAcceptTcpClient(ar);
|
||||||
|
using (HttpProcessor processor = new HttpProcessor(this))
|
||||||
|
{
|
||||||
|
processor.Process(tcpCLient);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (ObjectDisposedException)
|
||||||
|
{
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!IsActive)
|
||||||
|
return;
|
||||||
|
//listener.Start();
|
||||||
|
listener.BeginAcceptTcpClient(AcceptTcpConnection, listener);
|
||||||
|
}
|
||||||
|
|
||||||
public abstract void HandleGetRequest(HttpProcessor p);
|
public abstract void HandleGetRequest(HttpProcessor p);
|
||||||
|
|
||||||
public abstract void HandlePostRequest(HttpProcessor p, StreamReader inputData);
|
public abstract void HandlePostRequest(HttpProcessor p, StreamReader inputData);
|
||||||
|
Loading…
Reference in New Issue
Block a user