Documentation ¶
Overview ¶
Copyright (c) 2016-2019 Uber Technologies, Inc.
Licensed 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.
Copyright (c) 2016-2019 Uber Technologies, Inc.
Licensed 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.
Copyright (c) 2016-2019 Uber Technologies, Inc.
Licensed 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.
Copyright (c) 2016-2019 Uber Technologies, Inc.
Licensed 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.
Copyright (c) 2016-2019 Uber Technologies, Inc.
Licensed 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.
Copyright (c) 2016-2019 Uber Technologies, Inc.
Licensed 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.
Copyright (c) 2016-2019 Uber Technologies, Inc.
Licensed 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.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( ErrTorrentNotFound = errors.New("torrent not found") ErrSchedulerStopped = errors.New("scheduler has been stopped") ErrTorrentTimeout = errors.New("torrent timed out") ErrTorrentRemoved = errors.New("torrent manually removed") ErrSendEventTimedOut = errors.New("event loop send timed out") )
Scheduler errors.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { // SeederTTI is the duration a seeding torrent will exist without being // read from before being cancelled. SeederTTI time.Duration `yaml:"seeder_tti"` // LeecherTTI is the duration a leeching torrent will exist without being // written to before being cancelled. LeecherTTI time.Duration `yaml:"leecher_tti"` // ConnTTI is the duration a connection will exist without transmitting any // needed pieces or requesting any pieces. ConnTTI time.Duration `yaml:"conn_tti"` // ConnTTL is the max duration a connection may exist regardless of liveness. ConnTTL time.Duration `yaml:"conn_ttl"` // PreemptionInterval is the interval in which the Scheduler analyzes the // status of existing conns and determines whether to preempt them. PreemptionInterval time.Duration `yaml:"preemption_interval"` // EmitStatsInterval is the interval introspective stats are emitted from // the Scheduler. EmitStatsInterval time.Duration `yaml:"emit_stats_interval"` // DisablePreemption disables resource preemption. Should only be used for // testing purposes. DisablePreemption bool `yaml:"disable_preemption"` ProbeTimeout time.Duration `yaml:"probe_timeout"` ConnState connstate.Config `yaml:"connstate"` Conn conn.Config `yaml:"conn"` Dispatch dispatch.Config `yaml:"dispatch"` TorrentLog log.Config `yaml:"torrentlog"` Log log.Config `yaml:"log"` }
Config is the Scheduler configuration.
type ReloadableScheduler ¶
ReloadableScheduler is a Scheduler which supports reloadable configuration.
func NewAgentScheduler ¶
func NewAgentScheduler( config Config, stats tally.Scope, pctx core.PeerContext, cads *store.CADownloadStore, netevents networkevent.Producer, trackers hashring.PassiveRing, tls *tls.Config) (ReloadableScheduler, error)
NewAgentScheduler creates and starts a ReloadableScheduler configured for an agent.
func NewOriginScheduler ¶
func NewOriginScheduler( config Config, stats tally.Scope, pctx core.PeerContext, cas *store.CAStore, netevents networkevent.Producer, blobRefresher *blobrefresh.Refresher) (ReloadableScheduler, error)
NewOriginScheduler creates and starts a ReloadableScheduler configured for an origin.