engine

package
v0.5.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 7, 2018 License: MIT Imports: 20 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

Config is the injected variable for the torrent config

Conn is the injected variable for the websocket connection

View Source
var Logger *logrus.Logger

Logger is the injected variable for global logger

Functions

func CalculateCompletedSize added in v0.3.0

func CalculateCompletedSize(tFromStorage *Storage.TorrentLocal, activeTorrent *torrent.Torrent) int64

CalculateCompletedSize will be used to calculate how much of the actual torrent we have completed minus the canceled files (even if they have been partially downloaded)

func CalculateDownloadSize added in v0.2.0

func CalculateDownloadSize(tFromStorage *Storage.TorrentLocal, activeTorrent *torrent.Torrent) int64

CalculateDownloadSize will calculate the download size once file priorities are sorted out

func CalculateTorrentETA

func CalculateTorrentETA(tSize int64, tBytesCompleted int64, c *ClientDB)

CalculateTorrentETA is used to estimate the remaining dl time of the torrent based on the speed that the MB are being downloaded

func CalculateTorrentSpeed

func CalculateTorrentSpeed(t *torrent.Torrent, c *ClientDB, oc ClientDB, completedSize int64)

CalculateTorrentSpeed is used to calculate the torrent upload and download speed over time c is current clientdb, oc is last client db to calculate speed over time

func CalculateTorrentStatus

func CalculateTorrentStatus(t *torrent.Torrent, c *ClientDB, config Settings.FullClientSettings, tFromStorage *storage.TorrentLocal, bytesCompleted int64, totalSize int64)

CalculateTorrentStatus is used to determine what the STATUS column of the frontend will display ll2

func CalculateUploadRatio

func CalculateUploadRatio(t *torrent.Torrent, c *ClientDB) string

CalculateUploadRatio calculates the download to upload ratio so you can see if you are being a good seeder

func CheckTorrentWatchFolder added in v0.2.0

func CheckTorrentWatchFolder(c *cron.Cron, db *storm.DB, tclient *torrent.Client, torrentLocalStorage Storage.TorrentLocal, config Settings.FullClientSettings)

CheckTorrentWatchFolder adds torrents from a watch folder //TODO see if you can use filepath.Abs instead of changing directory

func CopyFile added in v0.2.0

func CopyFile(srcFile string, destFile string)

CopyFile takes a source file string and a destination file string and copies the file

func CreateInitialTorrentArray added in v0.4.0

func CreateInitialTorrentArray(tclient *torrent.Client, TorrentLocalArray []*Storage.TorrentLocal, db *storm.DB)

CreateInitialTorrentArray adds all the torrents on program start from the database

func CreateServerPushMessage added in v0.2.0

func CreateServerPushMessage(message ServerPushMessage, conn *websocket.Conn)

CreateServerPushMessage Pushes a message from the server to the client

func ForceRSSRefresh

func ForceRSSRefresh(db *storm.DB, RSSFeedStore Storage.RSSFeedStore)

ForceRSSRefresh forces a refresh (in addition to the cron schedule) to add the new RSS feed

func HumanizeBytes

func HumanizeBytes(bytes float32) string

HumanizeBytes returns a nice humanized version of bytes in either GB or MB

func InitializeCronEngine

func InitializeCronEngine() *cron.Cron

InitializeCronEngine initializes and starts the cron engine so we can add tasks as needed, returns pointer to the engine

func LogCronStatus

func LogCronStatus(c *cron.Cron)

LogCronStatus prints out the status of the cron jobs to the log

func MakeRange added in v0.4.0

func MakeRange(min, max int) []int

MakeRange creates a range of pieces to set their priority based on a file

func MoveAndLeaveSymlink(config Settings.FullClientSettings, tHash string, db *storm.DB, moveDone bool, oldPath string) error

MoveAndLeaveSymlink takes the file from the default download dir and moves it to the user specified directory and then leaves a symlink behind.

func RefreshRSSCron

func RefreshRSSCron(c *cron.Cron, db *storm.DB, tclient *torrent.Client, torrentLocalStorage Storage.TorrentLocal, config Settings.FullClientSettings)

RefreshRSSCron refreshes all of the RSS feeds on an hourly basis

func RefreshSingleRSSFeed

func RefreshSingleRSSFeed(db *storm.DB, RSSFeed Storage.SingleRSSFeed) Storage.SingleRSSFeed

RefreshSingleRSSFeed refreshing a single RSS feed to send to the client (so no updating database) mainly by updating the torrent list to display any changes

func SetFilePriority added in v0.4.0

func SetFilePriority(t *torrent.Client, db *storm.DB)

SetFilePriority sets the priorities for all of the files in all of the torrents

func StartTorrent

func StartTorrent(clientTorrent *torrent.Torrent, torrentLocalStorage Storage.TorrentLocal, torrentDbStorage *storm.DB, torrentType, torrentFilePathAbs, torrentStoragePath, labelValue string, config Settings.FullClientSettings)

StartTorrent creates the storage.db entry and starts A NEW TORRENT and adds to the running torrent array

func VerifyData added in v0.5.1

func VerifyData(singleTorrent *torrent.Torrent)

VerifyData just verifies the data of a torrent by hash

Types

type AuthResponse added in v0.4.0

type AuthResponse struct {
	MessageType string
	Payload     string
}

AuthResponse is sent when the client fails to perform authentication correctly

type ClientDB

type ClientDB struct {
	TorrentHashString  string         //Passed to client for displaying hash and is used to uniquely identify all torrents
	TorrentName        string         //String of the name of the torrent
	DownloadedSize     string         //how much the client has downloaded total
	Size               string         //total size of the torrent
	DownloadSpeed      string         //the dl speed of the torrent
	Status             string         //Passed to client for display
	PercentDone        string         //Passed to client to show percent done
	ActivePeers        string         //passed to client
	UploadSpeed        string         //passed to client to show Uploadspeed
	StoragePath        string         //Passed to client (and stored in stormdb)
	DateAdded          string         //Passed to client (and stored in stormdb)
	ETA                string         //Passed to client
	TorrentLabel       string         //Passed to client and stored in stormdb
	SourceType         string         //Stores whether the torrent came from a torrent file or a magnet link
	KnownSwarm         []torrent.Peer //Passed to client for Peer Tab
	UploadRatio        string         //Passed to client, stores the string for uploadratio stored in stormdb
	TotalUploadedSize  string         //Humanized version of TotalUploadedBytes to pass to the client
	TotalUploadedBytes int64          `json:"-"` //includes bytes that happened before reboot (from stormdb)

	BytesCompleted   int64         `json:"-"` //Internal used for calculating the dl speed
	DataBytesWritten int64         `json:"-"` //Internal used for calculating dl speed
	DataBytesRead    int64         `json:"-"` //Internal used for calculating dl speed
	UpdatedAt        time.Time     `json:"-"` //Internal used for calculating speeds of upload and download
	TorrentHash      metainfo.Hash `json:"-"` //Used to create string for TorrentHashString... not sure why I have it... make that a TODO I guess
	NumberofFiles    int           //Number of files in the torrent
	NumberofPieces   int           //Total number of pieces in the torrent (Not currently used)
	MaxConnections   int           //Used to stop the torrent by limiting the max allowed connections
	// contains filtered or unexported fields
}

ClientDB struct contains the struct that is used to compose the torrentlist

func CreateRunningTorrentArray

func CreateRunningTorrentArray(tclient *torrent.Client, TorrentLocalArray []*Storage.TorrentLocal, PreviousTorrentArray []ClientDB, config Settings.FullClientSettings, db *storm.DB) (RunningTorrentArray []ClientDB)

CreateRunningTorrentArray creates the entire torrent list to pass to client

func CreateTorrentDetailJSON

func CreateTorrentDetailJSON(tclient *torrent.Client, selectedHash string, torrentStorage *storm.DB) ClientDB

CreateTorrentDetailJSON creates the json response for a request for more torrent information

type Message

type Message struct {
	MessageType string
	Payload     interface{}
}

Message contains the JSON messages from the client, we first unmarshal to get the messagetype, then pass it on to each module

type PeerFileList

type PeerFileList struct {
	MessageType string
	TotalPeers  int
	PeerList    []torrent.Peer
}

PeerFileList returns a slice of peers

func CreatePeerListArray

func CreatePeerListArray(tclient *torrent.Client, selectedHash string) PeerFileList

CreatePeerListArray create a list of peers for the torrent and displays them

type RSSFeedsNames

type RSSFeedsNames struct {
	RSSName    string
	RSSFeedURL string
}

RSSFeedsNames stores all of the feeds by name and with URL

type RSSJSONList

type RSSJSONList struct {
	MessageType   string
	TotalRSSFeeds int
	RSSFeeds      []RSSFeedsNames //strings of the full rss feed
}

RSSJSONList is a slice of gofeed.Feeds sent to the client

type ServerPushMessage added in v0.2.0

type ServerPushMessage struct {
	MessageType  string
	MessageLevel string //can be "success", "error", "warn", "info"
	Payload      string //the actual message
}

ServerPushMessage is information (usually logs and status messages) that the server pushes to the client

type SettingsFile added in v0.4.0

type SettingsFile struct {
	MessageType string
	Config      Settings.FullClientSettings
}

type SingleRSSFeedMessage added in v0.4.0

type SingleRSSFeedMessage struct {
	MessageType   string
	URL           string //the URL of the individual RSS feed
	Name          string
	TotalTorrents int
	Torrents      []Storage.SingleRSSTorrent //name of the torrents
}

SingleRSSFeedMessage contains the torrents/name/etc of a single torrent feed

type TorrentFile

type TorrentFile struct {
	TorrentHashString string //Used to tie the file to a torrent //TODO not sure if needed
	FileName          string //The name of the file
	FilePath          string //The relative filepath to the file
	FileSize          string //Humanized file size display
	FilePercent       string //String value of percent of individual file percent done
	FilePriority      string //Currently "High", "Normal", or "Cancel"
}

TorrentFile describes a single file that a torrent client is downloading for a single torrent

type TorrentFileList

type TorrentFileList struct {
	MessageType string
	TotalFiles  int           `json:"TotalFiles"`
	FileList    []TorrentFile `json:"FileList"`
}

TorrentFileList supplies a list of files attached to a single torrent along with some additional information

func CreateFileListArray

func CreateFileListArray(tclient *torrent.Client, selectedHash string, db *storm.DB, config Settings.FullClientSettings) TorrentFileList

CreateFileListArray creates a file list for a single torrent that is selected and sent to the server

type TorrentList

type TorrentList struct {
	MessageType    string     `json:"MessageType"`
	Totaltorrents  int        `json:"total"`
	ClientDBstruct []ClientDB `json:"data"`
}

TorrentList struct contains the torrent list that is sent to the client

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL