예제 #1
0
 public ConnectionEndPoint(IPEndPoint hostIpEndPoint, IServerNameResolver serverNameResolver, IContactPoint contactPoint)
 {
     _serverNameResolver  = serverNameResolver ?? throw new ArgumentNullException(nameof(serverNameResolver));
     ContactPoint         = contactPoint;
     SocketIpEndPoint     = hostIpEndPoint ?? throw new ArgumentNullException(nameof(hostIpEndPoint));
     EndpointFriendlyName = hostIpEndPoint.ToString();
 }
예제 #2
0
 public ContactPointParser(
     IDnsResolver dnsResolver,
     ProtocolOptions protocolOptions,
     IServerNameResolver serverNameResolver,
     bool keepContactPointsUnresolved)
 {
     _dnsResolver                 = dnsResolver ?? throw new ArgumentNullException(nameof(dnsResolver));
     _protocolOptions             = protocolOptions ?? throw new ArgumentNullException(nameof(protocolOptions));
     _serverNameResolver          = serverNameResolver ?? throw new ArgumentNullException(nameof(serverNameResolver));
     _keepContactPointsUnresolved = keepContactPointsUnresolved;
 }
예제 #3
0
 public HostnameContactPoint(
     IDnsResolver dnsResolver,
     ProtocolOptions protocolOptions,
     IServerNameResolver serverNameResolver,
     bool keepContactPointsUnresolved,
     string hostname)
 {
     _dns                         = dnsResolver ?? throw new ArgumentNullException(nameof(dnsResolver));
     _protocolOptions             = protocolOptions ?? throw new ArgumentNullException(nameof(protocolOptions));
     _serverNameResolver          = serverNameResolver ?? throw new ArgumentNullException(nameof(serverNameResolver));
     _keepContactPointsUnresolved = keepContactPointsUnresolved;
     _hostname                    = hostname ?? throw new ArgumentNullException(nameof(hostname));
 }
예제 #4
0
        public static string ResolveNameBestEffort(this IServerNameResolver resolver, string shortName)
        {
            string result = null;

            try
            {
                if (resolver != null)
                {
                    result = resolver.ResolveName(shortName);
                }
            }
            catch
            {
            }
            return(result);
        }
예제 #5
0
 public static string GetNetworkAddress(string self, string targetShortName, string targetNetworkAddress, IServerNameResolver nameResolver, bool isDefaultToShortName = false)
 {
     if (string.IsNullOrEmpty(targetShortName))
     {
         targetShortName = self;
     }
     if (!string.IsNullOrEmpty(targetNetworkAddress))
     {
         return(targetNetworkAddress);
     }
     if (nameResolver != null)
     {
         targetNetworkAddress = nameResolver.ResolveNameBestEffort(targetShortName);
     }
     if (string.IsNullOrEmpty(targetNetworkAddress) && isDefaultToShortName)
     {
         targetNetworkAddress = targetShortName;
     }
     return(targetNetworkAddress);
 }
 public IpLiteralContactPoint(IPAddress ipAddress, ProtocolOptions protocolOptions, IServerNameResolver serverNameResolver)
 {
     _ipAddress          = ipAddress ?? throw new ArgumentNullException(nameof(ipAddress));
     _protocolOptions    = protocolOptions ?? throw new ArgumentNullException(nameof(protocolOptions));
     _serverNameResolver = serverNameResolver ?? throw new ArgumentNullException(nameof(serverNameResolver));
 }
 public IpLiteralContactPoint(IPEndPoint ipEndPoint, IServerNameResolver serverNameResolver)
 {
     _ipEndPoint         = ipEndPoint ?? throw new ArgumentNullException(nameof(ipEndPoint));
     _serverNameResolver = serverNameResolver ?? throw new ArgumentNullException(nameof(serverNameResolver));
 }
예제 #8
0
        /// <summary>
        /// Creates a new instance. This class is also used to shareable a context across all instance that are created below one Cluster instance.
        /// One configuration instance per Cluster instance.
        /// </summary>
        internal Configuration(Policies policies,
                               ProtocolOptions protocolOptions,
                               PoolingOptions poolingOptions,
                               SocketOptions socketOptions,
                               ClientOptions clientOptions,
                               IAuthProvider authProvider,
                               IAuthInfoProvider authInfoProvider,
                               QueryOptions queryOptions,
                               IAddressTranslator addressTranslator,
                               IReadOnlyDictionary <string, IExecutionProfile> executionProfiles,
                               MetadataSyncOptions metadataSyncOptions,
                               IEndPointResolver endPointResolver,
                               IDriverMetricsProvider driverMetricsProvider,
                               DriverMetricsOptions metricsOptions,
                               string sessionName,
                               GraphOptions graphOptions,
                               Guid?clusterId,
                               string appVersion,
                               string appName,
                               MonitorReportingOptions monitorReportingOptions,
                               TypeSerializerDefinitions typeSerializerDefinitions,
                               bool?keepContactPointsUnresolved,
                               ISessionFactory sessionFactory                       = null,
                               IRequestOptionsMapper requestOptionsMapper           = null,
                               IStartupOptionsFactory startupOptionsFactory         = null,
                               IInsightsSupportVerifier insightsSupportVerifier     = null,
                               IRequestHandlerFactory requestHandlerFactory         = null,
                               IHostConnectionPoolFactory hostConnectionPoolFactory = null,
                               IRequestExecutionFactory requestExecutionFactory     = null,
                               IConnectionFactory connectionFactory                 = null,
                               IControlConnectionFactory controlConnectionFactory   = null,
                               IPrepareHandlerFactory prepareHandlerFactory         = null,
                               ITimerFactory timerFactory = null,
                               IObserverFactoryBuilder observerFactoryBuilder = null,
                               IInsightsClientFactory insightsClientFactory   = null,
                               IContactPointParser contactPointParser         = null,
                               IServerNameResolver serverNameResolver         = null,
                               IDnsResolver dnsResolver = null)
        {
            AddressTranslator = addressTranslator ?? throw new ArgumentNullException(nameof(addressTranslator));
            QueryOptions      = queryOptions ?? throw new ArgumentNullException(nameof(queryOptions));
            GraphOptions      = graphOptions ?? new GraphOptions();

            ClusterId                   = clusterId ?? Guid.NewGuid();
            ApplicationVersion          = appVersion ?? Configuration.DefaultApplicationVersion;
            ApplicationName             = appName ?? Configuration.FallbackApplicationName;
            ApplicationNameWasGenerated = appName == null;

            Policies                    = policies;
            ProtocolOptions             = protocolOptions;
            PoolingOptions              = poolingOptions;
            SocketOptions               = socketOptions;
            ClientOptions               = clientOptions;
            AuthProvider                = authProvider;
            AuthInfoProvider            = authInfoProvider;
            StartupOptionsFactory       = startupOptionsFactory ?? new StartupOptionsFactory(ClusterId, ApplicationVersion, ApplicationName);
            SessionFactory              = sessionFactory ?? new SessionFactory();
            RequestOptionsMapper        = requestOptionsMapper ?? new RequestOptionsMapper();
            MetadataSyncOptions         = metadataSyncOptions?.Clone() ?? new MetadataSyncOptions();
            DnsResolver                 = dnsResolver ?? new DnsResolver();
            MetricsOptions              = metricsOptions ?? new DriverMetricsOptions();
            MetricsProvider             = driverMetricsProvider ?? new NullDriverMetricsProvider();
            SessionName                 = sessionName;
            MetricsEnabled              = driverMetricsProvider != null;
            TypeSerializers             = typeSerializerDefinitions?.Definitions;
            KeepContactPointsUnresolved = keepContactPointsUnresolved ?? false;

            ObserverFactoryBuilder    = observerFactoryBuilder ?? (MetricsEnabled ? (IObserverFactoryBuilder) new MetricsObserverFactoryBuilder() : new NullObserverFactoryBuilder());
            RequestHandlerFactory     = requestHandlerFactory ?? new RequestHandlerFactory();
            HostConnectionPoolFactory = hostConnectionPoolFactory ?? new HostConnectionPoolFactory();
            RequestExecutionFactory   = requestExecutionFactory ?? new RequestExecutionFactory();
            ConnectionFactory         = connectionFactory ?? new ConnectionFactory();
            ControlConnectionFactory  = controlConnectionFactory ?? new ControlConnectionFactory();
            PrepareHandlerFactory     = prepareHandlerFactory ?? new PrepareHandlerFactory();
            TimerFactory = timerFactory ?? new TaskBasedTimerFactory();

            RequestOptions    = RequestOptionsMapper.BuildRequestOptionsDictionary(executionProfiles, policies, socketOptions, clientOptions, queryOptions, GraphOptions);
            ExecutionProfiles = BuildExecutionProfilesDictionary(executionProfiles, RequestOptions);

            MonitorReportingOptions = monitorReportingOptions ?? new MonitorReportingOptions();
            InsightsSupportVerifier = insightsSupportVerifier ?? Configuration.DefaultInsightsSupportVerifier;
            InsightsClientFactory   = insightsClientFactory ?? Configuration.DefaultInsightsClientFactory;
            ServerNameResolver      = serverNameResolver ?? new ServerNameResolver(ProtocolOptions);
            EndPointResolver        = endPointResolver ?? new EndPointResolver(ServerNameResolver);
            ContactPointParser      = contactPointParser ?? new ContactPointParser(DnsResolver, ProtocolOptions, ServerNameResolver, KeepContactPointsUnresolved);

            // Create the buffer pool with 16KB for small buffers and 256Kb for large buffers.
            // The pool does not eagerly reserve the buffers, so it doesn't take unnecessary memory
            // to create the instance.
            BufferPool = new RecyclableMemoryStreamManager(16 * 1024, 256 * 1024, ProtocolOptions.MaximumFrameLength);
            Timer      = new HashedWheelTimer();
        }
예제 #9
0
 public EndPointResolver(IServerNameResolver serverNameResolver)
 {
     _serverNameResolver = serverNameResolver ?? throw new ArgumentNullException(nameof(serverNameResolver));
 }