123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- using System;
- using System.Net.Security;
- using System.Net.Sockets;
- using System.Security.Authentication;
- using System.Security.Cryptography.X509Certificates;
- using MECF.Framework.Common.Communications.Tcp.Buffer;
- using MECF.Framework.Common.Communications.Tcp.Socket.Framing;
- using MECF.Framework.Common.Communications.Tcp.Socket.Framing.Base;
- namespace MECF.Framework.Common.Communications.Tcp.Socket.Client.APM
- {
- public sealed class TcpSocketClientConfiguration
- {
- public TcpSocketClientConfiguration()
- : this(new SegmentBufferManager(100, 8192, 1, true))
- {
- }
- public TcpSocketClientConfiguration(ISegmentBufferManager bufferManager)
- {
- BufferManager = bufferManager;
- ReceiveBufferSize = 8192; // Specifies the total per-socket buffer space reserved for receives. This is unrelated to the maximum message size or the size of a TCP window.
- SendBufferSize = 8192; // Specifies the total per-socket buffer space reserved for sends. This is unrelated to the maximum message size or the size of a TCP window.
- ReceiveTimeout = TimeSpan.Zero; // Receive a time-out. This option applies only to synchronous methods; it has no effect on asynchronous methods such as the BeginSend method.
- SendTimeout = TimeSpan.Zero; // Send a time-out. This option applies only to synchronous methods; it has no effect on asynchronous methods such as the BeginSend method.
- NoDelay = true; // Disables the Nagle algorithm for send coalescing.
- LingerState = new LingerOption(false, 0); // The socket will linger for x seconds after Socket.Close is called.
- KeepAlive = false; // Use keep-alives.
- KeepAliveInterval = TimeSpan.FromSeconds(5);// https://msdn.microsoft.com/en-us/library/system.net.sockets.socketoptionname(v=vs.110).aspx
- ReuseAddress = false; // Allows the socket to be bound to an address that is already in use.
- SslEnabled = false;
- SslTargetHost = null;
- SslClientCertificates = new X509CertificateCollection();
- SslEncryptionPolicy = EncryptionPolicy.RequireEncryption;
- SslEnabledProtocols = SslProtocols.Ssl3 | SslProtocols.Tls;
- SslCheckCertificateRevocation = false;
- SslPolicyErrorsBypassed = false;
- ConnectTimeout = TimeSpan.FromSeconds(15);
- FrameBuilder = new LineBasedFrameBuilder();
- }
- public ISegmentBufferManager BufferManager { get; set; }
- public int ReceiveBufferSize { get; set; }
- public int SendBufferSize { get; set; }
- public TimeSpan ReceiveTimeout { get; set; }
- public TimeSpan SendTimeout { get; set; }
- public bool NoDelay { get; set; }
- public LingerOption LingerState { get; set; }
- public bool KeepAlive { get; set; }
- public TimeSpan KeepAliveInterval { get; set; }
- public bool ReuseAddress { get; set; }
- public bool SslEnabled { get; set; }
- public string SslTargetHost { get; set; }
- public X509CertificateCollection SslClientCertificates { get; set; }
- public EncryptionPolicy SslEncryptionPolicy { get; set; }
- public SslProtocols SslEnabledProtocols { get; set; }
- public bool SslCheckCertificateRevocation { get; set; }
- public bool SslPolicyErrorsBypassed { get; set; }
- public TimeSpan ConnectTimeout { get; set; }
- public IFrameBuilder FrameBuilder { get; set; }
- }
- }
|