|
- using Shadowsocks.Model;
- using System;
- using System.Collections.Generic;
- using System.Net;
- using System.Text;
-
- namespace Shadowsocks.Controller.Strategy
- {
- public enum IStrategyCallerType
- {
- TCP,
- UDP
- }
-
- /*
- * IStrategy
- *
- * Subclasses must be thread-safe
- */
- public interface IStrategy
- {
- string Name { get; }
-
- string ID { get; }
-
- /*
- * Called when servers need to be reloaded, i.e. new configuration saved
- */
- void ReloadServers();
-
- /*
- * Get a new server to use in TCPRelay or UDPRelay
- */
- Server GetAServer(IStrategyCallerType type, IPEndPoint localIPEndPoint, EndPoint destEndPoint);
-
- /*
- * TCPRelay will call this when latency of a server detected
- */
- void UpdateLatency(Server server, TimeSpan latency);
-
- /*
- * TCPRelay will call this when reading from a server
- */
- void UpdateLastRead(Server server);
-
- /*
- * TCPRelay will call this when writing to a server
- */
- void UpdateLastWrite(Server server);
-
- /*
- * TCPRelay will call this when fatal failure detected
- */
- void SetFailure(Server server);
- }
- }
|