aboutsummaryrefslogtreecommitdiff
path: root/Emby.Common.Implementations/Net/NetAcceptSocket.cs
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-05-31 15:40:34 -0400
committerGitHub <noreply@github.com>2017-05-31 15:40:34 -0400
commit91176d9ccc1dde8155c10411c70e62a9f4b059d5 (patch)
tree21365f5a8dd09534a53d9f88d2a7a3116f3f3f98 /Emby.Common.Implementations/Net/NetAcceptSocket.cs
parentc37c9a75073b1b9caa3af2c3bc62abd837bd630e (diff)
parent4e10daf646e0788409f2bc52ef70effa2616e3f3 (diff)
Merge pull request #2677 from MediaBrowser/beta
Beta
Diffstat (limited to 'Emby.Common.Implementations/Net/NetAcceptSocket.cs')
-rw-r--r--Emby.Common.Implementations/Net/NetAcceptSocket.cs45
1 files changed, 27 insertions, 18 deletions
diff --git a/Emby.Common.Implementations/Net/NetAcceptSocket.cs b/Emby.Common.Implementations/Net/NetAcceptSocket.cs
index 82e7e9b00..5e831ac7a 100644
--- a/Emby.Common.Implementations/Net/NetAcceptSocket.cs
+++ b/Emby.Common.Implementations/Net/NetAcceptSocket.cs
@@ -97,7 +97,6 @@ namespace Emby.Common.Implementations.Net
_acceptor.StartAccept();
}
-#if NET46
public Task SendFile(string path, byte[] preBuffer, byte[] postBuffer, CancellationToken cancellationToken)
{
var options = TransmitFileOptions.UseDefaultWorkerThread;
@@ -109,6 +108,18 @@ namespace Emby.Common.Implementations.Net
return completionSource.Task;
}
+ public IAsyncResult BeginSendFile(string path, byte[] preBuffer, byte[] postBuffer, AsyncCallback callback, object state)
+ {
+ var options = TransmitFileOptions.UseDefaultWorkerThread;
+
+ return Socket.BeginSendFile(path, preBuffer, postBuffer, options, new AsyncCallback(FileSendCallback), state);
+ }
+
+ public void EndSendFile(IAsyncResult result)
+ {
+ Socket.EndSendFile(result);
+ }
+
private void FileSendCallback(IAsyncResult ar)
{
// Retrieve the socket from the state object.
@@ -117,25 +128,23 @@ namespace Emby.Common.Implementations.Net
var client = data.Item1;
var path = data.Item2;
var taskCompletion = data.Item3;
-
+
// Complete sending the data to the remote device.
- try {
- client.EndSendFile(ar);
- taskCompletion.TrySetResult(true);
-}
- catch(SocketException ex){
- _logger.Info("Socket.SendFile failed for {0}. error code {1}", path, ex.SocketErrorCode);
- taskCompletion.TrySetException(ex);
-}catch(Exception ex){
- taskCompletion.TrySetException(ex);
-}
- }
-#else
- public Task SendFile(string path, byte[] preBuffer, byte[] postBuffer, CancellationToken cancellationToken)
- {
- throw new NotImplementedException();
+ try
+ {
+ client.EndSendFile(ar);
+ taskCompletion.TrySetResult(true);
+ }
+ catch (SocketException ex)
+ {
+ _logger.Info("Socket.SendFile failed for {0}. error code {1}", path, ex.SocketErrorCode);
+ taskCompletion.TrySetException(ex);
+ }
+ catch (Exception ex)
+ {
+ taskCompletion.TrySetException(ex);
+ }
}
-#endif
public void Dispose()
{