package frontend import ( "context" "github.com/chihaya/chihaya/bittorrent" ) // TrackerLogic is the interface used by a frontend in order to: (1) generate a // response from a parsed request, and (2) asynchronously observe anything // after the response has been delivered to the client. type TrackerLogic interface { // HandleAnnounce generates a response for an Announce. // // Returns the updated context, the generated AnnounceResponse and no error // on success; nil and error on failure. HandleAnnounce(context.Context, *bittorrent.AnnounceRequest) (context.Context, *bittorrent.AnnounceResponse, error) // AfterAnnounce does something with the results of an Announce after it // has been completed. AfterAnnounce(context.Context, *bittorrent.AnnounceRequest, *bittorrent.AnnounceResponse) // HandleScrape generates a response for a Scrape. // // Returns the updated context, the generated AnnounceResponse and no error // on success; nil and error on failure. HandleScrape(context.Context, *bittorrent.ScrapeRequest) (context.Context, *bittorrent.ScrapeResponse, error) // AfterScrape does something with the results of a Scrape after it has been completed. AfterScrape(context.Context, *bittorrent.ScrapeRequest, *bittorrent.ScrapeResponse) }