sender.go 852 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package sender
  2. import (
  3. "v2ray.com/core/app"
  4. "v2ray.com/core/common"
  5. "v2ray.com/core/common/net"
  6. "v2ray.com/core/common/serial"
  7. "v2ray.com/core/transport/internet"
  8. )
  9. type Sender interface {
  10. SendTo(net.Destination) (internet.Connection, error)
  11. }
  12. type SenderManager struct {
  13. }
  14. func New(space app.Space, config *Config) (*SenderManager, error) {
  15. return &SenderManager{}, nil
  16. }
  17. type SenderManagerFactory struct{}
  18. func (SenderManagerFactory) Create(space app.Space, config interface{}) (app.Application, error) {
  19. return New(space, config.(*Config))
  20. }
  21. func FromSpace(space app.Space) *SenderManager {
  22. app := space.(app.AppGetter).GetApp(serial.GetMessageType((*Config)(nil)))
  23. if app == nil {
  24. return nil
  25. }
  26. return app.(*SenderManager)
  27. }
  28. func init() {
  29. common.Must(app.RegisterApplicationFactory((*Config)(nil), SenderManagerFactory{}))
  30. }