Skip to content

Commit

Permalink
init commit & add sdk overwrite parameter
Browse files Browse the repository at this point in the history
  • Loading branch information
glin-gogogo committed Nov 29, 2023
1 parent 1ecffdb commit 24e0775
Show file tree
Hide file tree
Showing 10 changed files with 982 additions and 0 deletions.
79 changes: 79 additions & 0 deletions config/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@

package config

import (
"time"
)

// Reason of backing to source.
const (
BackSourceReasonNone = 0
BackSourceReasonRegisterFail = 1
BackSourceReasonMd5NotMatch = 2
BackSourceReasonDownloadError = 3
BackSourceReasonNoSpace = 4
BackSourceReasonInitError = 5
BackSourceReasonWriteError = 6
BackSourceReasonHostSysError = 7
BackSourceReasonNodeEmpty = 8
BackSourceReasonSourceError = 10
BackSourceReasonUserSpecified = 100
ForceNotBackSourceAddition = 1000
)

// Download pattern.
const (
PatternP2P = "p2p"
PatternSeedPeer = "seed-peer"
PatternSource = "source"
)

//// Download limit.
//const (
// DefaultPerPeerDownloadLimit = 20 * unit.MB
// DefaultTotalDownloadLimit = 100 * unit.MB
// DefaultUploadLimit = 100 * unit.MB
// DefaultMinRate = 20 * unit.MB
//)

// Others.
const (
DefaultTimestampFormat = "2006-01-02 15:04:05"
SchemaHTTP = "http"

DefaultTaskExpireTime = 6 * time.Hour
DefaultGCInterval = 1 * time.Minute
DefaultDaemonAliveTime = 5 * time.Minute
DefaultScheduleTimeout = 5 * time.Minute
DefaultDownloadTimeout = 5 * time.Minute

DefaultSchedulerSchema = "http"
DefaultSchedulerIP = "127.0.0.1"
DefaultSchedulerPort = 8002

DefaultPieceChanSize = 16
DefaultObjectMaxReplicas = 3
)


// Dfcache subcommand names.
const (
CmdStat = "stat"
CmdImport = "import"
CmdExport = "export"
CmdDelete = "delete"
)

// Service defalut port of listening.
const (
DefaultEndPort = 65535
DefaultPeerStartPort = 65000
DefaultUploadStartPort = 65002
DefaultObjectStorageStartPort = 65004
DefaultHealthyStartPort = 40901
)

var (
// DefaultCertValidityPeriod is default validity period of certificate.
DefaultCertValidityPeriod = 180 * 24 * time.Hour
)
52 changes: 52 additions & 0 deletions config/dfstore.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@


package config

import (
"errors"
"fmt"
"net/url"
)

type DfstoreConfig struct {
// Address of the object storage service.
Endpoint string `yaml:"endpoint,omitempty" mapstructure:"endpoint,omitempty"`

// Filter is used to generate a unique Task ID by
// filtering unnecessary query params in the URL,
// it is separated by & character.
Filter string `yaml:"filter,omitempty" mapstructure:"filter,omitempty"`

// Mode is the mode in which the backend is written,
// including WriteBack and AsyncWriteBack.
Mode int `yaml:"mode,omitempty" mapstructure:"mode,omitempty"`

// MaxReplicas is the maximum number of
// replicas of an object cache in seed peers.
MaxReplicas int `yaml:"maxReplicas,omitempty" mapstructure:"mode,maxReplicas"`
}

// New dfstore configuration.
func NewDfstore() *DfstoreConfig {
url := url.URL{
Scheme: "http",
Host: fmt.Sprintf("%s:%d", "127.0.0.1", DefaultObjectStorageStartPort),
}

return &DfstoreConfig{
Endpoint: url.String(),
MaxReplicas: DefaultObjectMaxReplicas,
}
}

func (cfg *DfstoreConfig) Validate() error {
if cfg.Endpoint == "" {
return errors.New("dfstore requires parameter endpoint")
}

if _, err := url.ParseRequestURI(cfg.Endpoint); err != nil {
return fmt.Errorf("invalid endpoint: %w", err)
}

return nil
}
32 changes: 32 additions & 0 deletions config/headers.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* Copyright 2020 The Dragonfly Authors
*
* 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.
*/

package config

const (
HeaderDragonflyFilter = "X-Dragonfly-Filter"
HeaderDragonflyPeer = "X-Dragonfly-Peer"
HeaderDragonflyTask = "X-Dragonfly-Task"
HeaderDragonflyRange = "X-Dragonfly-Range"
// HeaderDragonflyTag different HeaderDragonflyTag for the same url will be divided into different P2P overlay
HeaderDragonflyTag = "X-Dragonfly-Tag"
// HeaderDragonflyApplication is used for statistics and traffic control
HeaderDragonflyApplication = "X-Dragonfly-Application"
// HeaderDragonflyRegistry is used for dynamic registry mirrors.
HeaderDragonflyRegistry = "X-Dragonfly-Registry"
// HeaderDragonflyObjectMetaDigest is used for digest of object storage.
HeaderDragonflyObjectMetaDigest = "X-Dragonfly-Object-Meta-Digest"
)
Loading

0 comments on commit 24e0775

Please sign in to comment.