mirror of
https://github.com/valitydev/thrift.git
synced 2024-11-07 02:45:22 +00:00
THRIFT-4853 TServerFramedTransport is now obsolete and can be removed
Client: netstd Patch: Jens Geyer This closes #1789
This commit is contained in:
parent
2ff952b0af
commit
8f327f24ee
@ -1,150 +0,0 @@
|
||||
// Licensed to the Apache Software Foundation(ASF) under one
|
||||
// or more contributor license agreements.See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership.The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Thrift.Transport.Client;
|
||||
|
||||
namespace Thrift.Transport.Server
|
||||
{
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public class TServerFramedTransport : TServerTransport
|
||||
{
|
||||
private readonly int _clientTimeout;
|
||||
private readonly int _port;
|
||||
private TcpListener _server;
|
||||
|
||||
public TServerFramedTransport(TcpListener listener)
|
||||
: this(listener, 0)
|
||||
{
|
||||
}
|
||||
|
||||
public TServerFramedTransport(TcpListener listener, int clientTimeout)
|
||||
{
|
||||
_server = listener;
|
||||
_clientTimeout = clientTimeout;
|
||||
}
|
||||
|
||||
public TServerFramedTransport(int port)
|
||||
: this(port, 0)
|
||||
{
|
||||
}
|
||||
|
||||
public TServerFramedTransport(int port, int clientTimeout)
|
||||
{
|
||||
_port = port;
|
||||
_clientTimeout = clientTimeout;
|
||||
try
|
||||
{
|
||||
// Make server socket
|
||||
_server = new TcpListener(IPAddress.Any, _port);
|
||||
_server.Server.NoDelay = true;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
_server = null;
|
||||
throw new TTransportException("Could not create ServerSocket on port " + port + ".");
|
||||
}
|
||||
}
|
||||
|
||||
public override void Listen()
|
||||
{
|
||||
// Make sure not to block on accept
|
||||
if (_server != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
_server.Start();
|
||||
}
|
||||
catch (SocketException sx)
|
||||
{
|
||||
throw new TTransportException("Could not accept on listening socket: " + sx.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsClientPending()
|
||||
{
|
||||
return _server.Pending();
|
||||
}
|
||||
|
||||
protected override async Task<TTransport> AcceptImplementationAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
if (cancellationToken.IsCancellationRequested)
|
||||
{
|
||||
return await Task.FromCanceled<TTransport>(cancellationToken);
|
||||
}
|
||||
|
||||
if (_server == null)
|
||||
{
|
||||
throw new TTransportException(TTransportException.ExceptionType.NotOpen, "No underlying server socket.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
TFramedTransport tSocketTransport = null;
|
||||
var tcpClient = await _server.AcceptTcpClientAsync();
|
||||
|
||||
try
|
||||
{
|
||||
tSocketTransport = new TFramedTransport(new TSocketTransport(tcpClient)
|
||||
{
|
||||
Timeout = _clientTimeout
|
||||
});
|
||||
|
||||
return tSocketTransport;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
if (tSocketTransport != null)
|
||||
{
|
||||
tSocketTransport.Dispose();
|
||||
}
|
||||
else // Otherwise, clean it up ourselves.
|
||||
{
|
||||
((IDisposable) tcpClient).Dispose();
|
||||
}
|
||||
|
||||
throw;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new TTransportException(ex.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
if (_server != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
_server.Stop();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new TTransportException("WARNING: Could not close server socket: " + ex);
|
||||
}
|
||||
_server = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user