public static DependencyReader CreateReader(this ICacheFile cache, IAddressTranslator translator, Stream stream, bool leaveOpen) { var reader = new DependencyReader(stream, cache.ByteOrder, leaveOpen); reader.RegisterInstance(cache); reader.RegisterInstance(translator); if (cache.CacheType >= CacheType.Halo2Xbox) { reader.RegisterType(() => new Matrix4x4 { M11 = reader.ReadSingle(), M12 = reader.ReadSingle(), M13 = reader.ReadSingle(), M21 = reader.ReadSingle(), M22 = reader.ReadSingle(), M23 = reader.ReadSingle(), M31 = reader.ReadSingle(), M32 = reader.ReadSingle(), M33 = reader.ReadSingle(), M41 = reader.ReadSingle(), M42 = reader.ReadSingle(), M43 = reader.ReadSingle(), }); } return(reader); }
/// <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) { if (addressTranslator == null) { throw new ArgumentNullException("addressTranslator"); } if (queryOptions == null) { throw new ArgumentNullException("queryOptions"); } _policies = policies; _protocolOptions = protocolOptions; _poolingOptions = poolingOptions; _socketOptions = socketOptions; _clientOptions = clientOptions; _authProvider = authProvider; _authInfoProvider = authInfoProvider; _queryOptions = queryOptions; _addressTranslator = addressTranslator; }
public DependencyReader CreateReader(IAddressTranslator translator, IPointerExpander expander) { var reader = CreateReader(translator); reader.RegisterInstance(expander); return(reader); }
/// <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, IInterceptor interceptor) { if (addressTranslator == null) { throw new ArgumentNullException("addressTranslator"); } if (queryOptions == null) { throw new ArgumentNullException("queryOptions"); } _policies = policies; _protocolOptions = protocolOptions; _poolingOptions = poolingOptions; _socketOptions = socketOptions; _clientOptions = clientOptions; _authProvider = authProvider; _authInfoProvider = authInfoProvider; _queryOptions = queryOptions; _addressTranslator = addressTranslator; // 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(); _interceptor = interceptor; }
internal ControlConnection(Cluster cluster, Policies policies, ProtocolOptions protocolOptions, PoolingOptions poolingOptions, SocketOptions socketOptions, ClientOptions clientOptions, IAuthProvider authProvider, IAuthInfoProvider authInfoProvider, IAddressTranslator addressTranslator) { _cluster = cluster; _addressTranslator = addressTranslator; _reconnectionSchedule = _reconnectionPolicy.NewSchedule(); _reconnectionTimer = new Timer(ReconnectionClb, null, Timeout.Infinite, Timeout.Infinite); var config = new Configuration ( policies, protocolOptions, poolingOptions, socketOptions, clientOptions, authProvider, authInfoProvider, new QueryOptions(), addressTranslator ); _session = new Session(cluster, config, "", _controlConnectionProtocolVersion); }
/// <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, IStartupOptionsFactory startupOptionsFactory, ISessionFactoryBuilder <IInternalCluster, IInternalSession> sessionFactoryBuilder) { AddressTranslator = addressTranslator ?? throw new ArgumentNullException(nameof(addressTranslator)); QueryOptions = queryOptions ?? throw new ArgumentNullException(nameof(queryOptions)); Policies = policies; ProtocolOptions = protocolOptions; PoolingOptions = poolingOptions; SocketOptions = socketOptions; ClientOptions = clientOptions; AuthProvider = authProvider; AuthInfoProvider = authInfoProvider; StartupOptionsFactory = startupOptionsFactory; SessionFactoryBuilder = sessionFactoryBuilder; // 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(); }
/// <summary> /// Parses address from system table query response and translates it using the provided <paramref name="translator"/>. /// </summary> internal IPEndPoint GetRpcEndPoint(bool isPeersV2, IRow row, IAddressTranslator translator, int defaultPort) { IPAddress address; address = isPeersV2 ? GetRpcAddressFromPeersV2(row) : GetRpcAddressFromLocalPeersV1(row); if (address == null) { return(null); } if (TopologyRefresher.BindAllAddress.Equals(address)) { if (row.ContainsColumn("peer") && !row.IsNull("peer")) { // system.peers address = row.GetValue <IPAddress>("peer"); } else if (row.ContainsColumn("broadcast_address") && !row.IsNull("broadcast_address")) { // system.local address = row.GetValue <IPAddress>("broadcast_address"); } else if (row.ContainsColumn("listen_address") && !row.IsNull("listen_address")) { // system.local address = row.GetValue <IPAddress>("listen_address"); } else { ControlConnection.Logger.Error( "Found host with 0.0.0.0 as rpc_address and nulls as listen_address and broadcast_address. " + "Because of this, the driver can not connect to this node."); return(null); } ControlConnection.Logger.Warning( "Found host with 0.0.0.0 as rpc_address, using listen_address ({0}) to contact it instead. " + "If this is incorrect you should avoid the use of 0.0.0.0 server side.", address.ToString()); } var rpcPort = defaultPort; if (isPeersV2) { var nullableRpcPort = GetRpcPortFromPeersV2(row); if (nullableRpcPort == null) { ControlConnection.Logger.Warning( "Found host with NULL native_port, using default port ({0}) to contact it instead. ", rpcPort); } else { rpcPort = nullableRpcPort.Value; } } return(translator.Translate(new IPEndPoint(address, rpcPort))); }
public DependencyReader CreateReader(IAddressTranslator translator) { if (translator == null) { throw new ArgumentNullException(nameof(translator)); } return(CreateReader(FileName, translator)); }
/// <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, IStartupOptionsFactory startupOptionsFactory, ISessionFactoryBuilder <IInternalCluster, IInternalSession> sessionFactoryBuilder, IReadOnlyDictionary <string, IExecutionProfile> executionProfiles, IRequestOptionsMapper requestOptionsMapper, MetadataSyncOptions metadataSyncOptions, IEndPointResolver endPointResolver, IRequestHandlerFactory requestHandlerFactory = null, IHostConnectionPoolFactory hostConnectionPoolFactory = null, IRequestExecutionFactory requestExecutionFactory = null, IConnectionFactory connectionFactory = null, IControlConnectionFactory controlConnectionFactory = null, IPrepareHandlerFactory prepareHandlerFactory = null, ITimerFactory timerFactory = null) { AddressTranslator = addressTranslator ?? throw new ArgumentNullException(nameof(addressTranslator)); QueryOptions = queryOptions ?? throw new ArgumentNullException(nameof(queryOptions)); Policies = policies; ProtocolOptions = protocolOptions; PoolingOptions = poolingOptions; SocketOptions = socketOptions; ClientOptions = clientOptions; AuthProvider = authProvider; AuthInfoProvider = authInfoProvider; StartupOptionsFactory = startupOptionsFactory; SessionFactoryBuilder = sessionFactoryBuilder; RequestOptionsMapper = requestOptionsMapper; MetadataSyncOptions = metadataSyncOptions?.Clone() ?? new MetadataSyncOptions(); DnsResolver = new DnsResolver(); EndPointResolver = endPointResolver ?? new EndPointResolver(DnsResolver, protocolOptions); 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); ExecutionProfiles = BuildExecutionProfilesDictionary(executionProfiles, RequestOptions); // 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(); }
public Pointer64(long value, IAddressTranslator translator) { if (translator == null) { throw new ArgumentNullException(nameof(translator)); } this._value = value; this.translator = translator; }
public Pointer(int value, IAddressTranslator translator, IPointerExpander expander) { if (translator == null) { throw new ArgumentNullException(nameof(translator)); } this._value = value; this.translator = translator; this.expander = expander; }
public BlockCollection(DependencyReader reader, ICacheFile cache, IAddressTranslator translator, IPointerExpander expander) : base(reader, cache, translator, expander) { if (IsInvalid) { return; } reader.BaseStream.Position = Pointer.Address; for (int i = 0; i < Count; i++) { items.Add((T)reader.ReadObject(typeof(T), (int)cache.CacheType)); } }
private DependencyReader CreateReader(string fileName, IAddressTranslator translator) { var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); var reader = new DependencyReader(fs, ByteOrder); reader.RegisterInstance <CacheFile>(this); reader.RegisterInstance <ICacheFile>(this); if (translator != null) { reader.RegisterInstance <IAddressTranslator>(translator); } return(reader); }
public Pointer64(DependencyReader reader, IAddressTranslator translator) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } if (translator == null) { throw new ArgumentNullException(nameof(translator)); } this._value = reader.ReadInt64(); this.translator = translator; }
/// <summary> /// Uses system.peers values to build the Address translator /// </summary> internal static IPEndPoint GetAddressForPeerHost(Row row, IAddressTranslator translator, int port) { var address = row.GetValue <IPAddress>("rpc_address"); if (address == null) { return(null); } if (BindAllAddress.Equals(address) && !row.IsNull("peer")) { address = row.GetValue <IPAddress>("peer"); _logger.Warning(String.Format("Found host with 0.0.0.0 as rpc_address, using listen_address ({0}) to contact it instead. If this is incorrect you should avoid the use of 0.0.0.0 server side.", address)); } return(translator.Translate(new IPEndPoint(address, port))); }
/// <inheritdoc /> public IPEndPoint GetOrParseHostIpEndPoint(Row row, IAddressTranslator translator, int port) { if (_hostIpEndPoint != null) { return(_hostIpEndPoint); } var ipEndPoint = ControlConnection.GetAddressForLocalOrPeerHost(row, translator, port); if (ipEndPoint == null) { throw new DriverInternalError("Could not parse the node's ip address from system tables."); } return(ipEndPoint); }
public TagBlock(DependencyReader reader, ICacheFile cache, IAddressTranslator translator, IPointerExpander expander) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } if (translator == null) { throw new ArgumentNullException(nameof(translator)); } Count = reader.ReadInt32(); Pointer = new Pointer(reader.ReadInt32(), translator, expander); IsInvalid = Count <= 0 || Pointer.Address < 0 || Pointer.Address >= reader.BaseStream.Length; }
internal Configuration(Policies policies, ProtocolOptions protocolOptions, PoolingOptions poolingOptions, SocketOptions socketOptions, ClientOptions clientOptions, IAuthProvider authProvider, IAuthInfoProvider authInfoProvider, QueryOptions queryOptions, IAddressTranslator addressTranslator) { _policies = policies; _protocolOptions = protocolOptions; _poolingOptions = poolingOptions; _socketOptions = socketOptions; _clientOptions = clientOptions; _authProvider = authProvider; _authInfoProvider = authInfoProvider; _queryOptions = queryOptions; _addressTranslator = addressTranslator; }
internal CacheFile(CacheArgs args) { if (!File.Exists(args.FileName)) { throw Exceptions.FileNotFound(args.FileName); } FileName = args.FileName; ByteOrder = args.ByteOrder; BuildString = args.BuildString; CacheType = args.CacheType; Metadata = args.Metadata; HeaderTranslator = new AlphaHeaderAddressTranslator(this); MetadataTranslator = new AlphaTagAddressTranslator(this); using (var reader = CreateReader(HeaderTranslator)) Header = reader.ReadObject <CacheHeader>((int)CacheType); //change IndexPointer to use MetadataTranslator instead of HeaderTranslator Header.IndexPointer = new Pointer(Header.IndexPointer.Value, MetadataTranslator); using (var reader = CreateReader(MetadataTranslator)) { reader.Seek(Header.IndexPointer.Address, SeekOrigin.Begin); TagIndex = reader.ReadObject(new TagIndex(this)); StringIndex = new StringIndex(this); TagIndex.ReadItems(); StringIndex.ReadItems(); } Task.Factory.StartNew(() => { TagIndex.GetGlobalTag("play")?.ReadMetadata <Halo3.cache_file_resource_layout_table>(); TagIndex.GetGlobalTag("zone")?.ReadMetadata <Halo3.cache_file_resource_gestalt>(); TagIndex.GetGlobalTag("scnr")?.ReadMetadata <Halo3.scenario>(); }); }
/// <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(); }
/// <inheritdoc /> public IPEndPoint GetOrParseHostIpEndPoint(Row row, IAddressTranslator translator, int port) { return(SocketIpEndPoint); }
/// <summary> /// Configures the address translater to use for the new cluster. /// </summary> /// <remarks> /// See <c>IAddressTranslater</c> for more detail on address translation, /// but the default tanslater, <c>DefaultAddressTranslator</c>, should be /// correct in most cases. If unsure, stick to the default. /// </remarks> /// <param name="addressTranslator">the translater to use.</param> /// <returns>this Builder</returns> public Builder WithAddressTranslator(IAddressTranslator addressTranslator) { _addressTranslator = addressTranslator; return(this); }
public Pointer(DependencyReader reader, IAddressTranslator translator) : this(reader, translator, null) { }
internal CacheFile(CacheArgs args) { if (!File.Exists(args.FileName)) { throw Exceptions.FileNotFound(args.FileName); } FileName = args.FileName; ByteOrder = args.ByteOrder; BuildString = args.BuildString; CacheType = args.CacheType; Metadata = args.Metadata; if (args.CacheType == CacheType.Halo3Beta) { HeaderTranslator = new BetaHeaderAddressTranslator(this); MetadataTranslator = new BetaTagAddressTranslator(this); } else { HeaderTranslator = new SectionAddressTranslator(this, 0); MetadataTranslator = new TagAddressTranslator(this); } using (var reader = CreateReader(HeaderTranslator)) Header = reader.ReadObject <CacheHeader>((int)CacheType); //change IndexPointer to use MetadataTranslator instead of HeaderTranslator Header.IndexPointer = new Pointer(Header.IndexPointer.Value, MetadataTranslator); using (var reader = CreateReader(MetadataTranslator)) { reader.Seek(Header.IndexPointer.Address, SeekOrigin.Begin); TagIndex = reader.ReadObject(new TagIndex(this)); StringIndex = new StringIndex(this); TagIndex.ReadItems(); StringIndex.ReadItems(); switch (CacheType) { case CacheType.Halo3Beta: LocaleIndex = new LocaleIndex(this, 488, 28, 11); break; case CacheType.Halo3Retail: LocaleIndex = new LocaleIndex(this, 452, 68, 12); break; case CacheType.Halo3ODST: LocaleIndex = new LocaleIndex(this, 508, 68, 12); break; } } Task.Factory.StartNew(() => { TagIndex.GetGlobalTag("play")?.ReadMetadata <cache_file_resource_layout_table>(); TagIndex.GetGlobalTag("zone")?.ReadMetadata <cache_file_resource_gestalt>(); TagIndex.GetGlobalTag("scnr")?.ReadMetadata <scenario>(); }); }
public Pointer(int value, IAddressTranslator translator) : this(value, translator, null) { }
/// <summary> /// Configures the address translater to use for the new cluster. /// </summary> /// <remarks> /// See <c>IAddressTranslater</c> for more detail on address translation, /// but the default tanslater, <c>DefaultAddressTranslator</c>, should be /// correct in most cases. If unsure, stick to the default. /// </remarks> /// <param name="addressTranslator">the translater to use.</param> /// <returns>this Builder</returns> public new DseClusterBuilder WithAddressTranslator(IAddressTranslator addressTranslator) { _addressTranslator = addressTranslator; base.WithAddressTranslator(addressTranslator); return(this); }
/// <summary> /// Uses system.peers values to build the Address translator /// </summary> internal static IPEndPoint GetAddressForPeerHost(Row row, IAddressTranslator translator, int port) { var address = row.GetValue<IPAddress>("rpc_address"); if (address == null) { return null; } if (BindAllAddress.Equals(address) && !row.IsNull("peer")) { address = row.GetValue<IPAddress>("peer"); _logger.Warning(String.Format("Found host with 0.0.0.0 as rpc_address, using listen_address ({0}) to contact it instead. If this is incorrect you should avoid the use of 0.0.0.0 server side.", address)); } return translator.Translate(new IPEndPoint(address, port)); }
/// <summary> /// Configures the address translater to use for the new cluster. /// </summary> /// <remarks> /// See <c>IAddressTranslater</c> for more detail on address translation, /// but the default tanslater, <c>DefaultAddressTranslator</c>, should be /// correct in most cases. If unsure, stick to the default. /// </remarks> /// <param name="addressTranslator">the translater to use.</param> /// <returns>this Builder</returns> public new DseClusterBuilder WithAddressTranslator(IAddressTranslator addressTranslator) { _addressTranslator = addressTranslator; base.WithAddressTranslator(addressTranslator); return this; }
public static DependencyReader CreateReader(this ICacheFile cache, IAddressTranslator translator, bool leaveOpen) { var fs = new FileStream(cache.FileName, FileMode.Open, FileAccess.Read); return(CreateReader(cache, translator, fs, leaveOpen)); }
public static DependencyReader CreateReader(this ICacheFile cache, IAddressTranslator translator, Stream stream) => CreateReader(cache, translator, stream, false);
public BlockCollection(DependencyReader reader, ICacheFile cache, IAddressTranslator translator) : this(reader, cache, translator, null) { }
/// <summary> /// Configures the address translater to use for the new cluster. /// </summary> /// <remarks> /// See <c>IAddressTranslater</c> for more detail on address translation, /// but the default tanslater, <c>DefaultAddressTranslator</c>, should be /// correct in most cases. If unsure, stick to the default. /// </remarks> /// <param name="addressTranslator">the translater to use.</param> /// <returns>this Builder</returns> public Builder WithAddressTranslator(IAddressTranslator addressTranslator) { _addressTranslator = addressTranslator; return this; }
public DependencyReader CreateReader(IAddressTranslator translator) => CacheFactory.CreateReader(this, translator);