diff --git a/connection.go b/connection.go index 091f4d5..21d3977 100644 --- a/connection.go +++ b/connection.go @@ -10,6 +10,11 @@ type Connection struct { TX chan<- *DataFrame ID ID closed bool + logger Logger +} + +func (c *Connection) SetLogger(logger Logger) { + c.logger = logger } func (c *Connection) Read(p []byte) (int, error) { diff --git a/logger.go b/logger.go new file mode 100644 index 0000000..9bfdf57 --- /dev/null +++ b/logger.go @@ -0,0 +1,43 @@ +package tunnel + +type Logger interface { + Trace(args ...interface{}) + Tracef(format string, args ...interface{}) + + Debug(args ...interface{}) + Debugf(format string, args ...interface{}) + + Info(args ...interface{}) + Infof(format string, args ...interface{}) + + Error(args ...interface{}) + Errorf(format string, args ...interface{}) + + Fatal(args ...interface{}) + Fatalf(format string, args ...interface{}) + + Panic(args ...interface{}) + Panicf(format string, args ...interface{}) +} + +type logger struct{} + +func (l *logger) Trace(args ...interface{}) +func (l *logger) Tracef(format string, args ...interface{}) + +func (l *logger) Debug(args ...interface{}) +func (l *logger) Debugf(format string, args ...interface{}) + +func (l *logger) Info(args ...interface{}) +func (l *logger) Infof(format string, args ...interface{}) + +func (l *logger) Error(args ...interface{}) +func (l *logger) Errorf(format string, args ...interface{}) + +func (l *logger) Fatal(args ...interface{}) +func (l *logger) Fatalf(format string, args ...interface{}) + +func (l *logger) Panic(args ...interface{}) +func (l *logger) Panicf(format string, args ...interface{}) + +var DefaultLogger = &logger{} diff --git a/manager.go b/manager.go index e4db0cb..6ed4325 100644 --- a/manager.go +++ b/manager.go @@ -13,6 +13,7 @@ type Manager struct { closed chan bool newConnection chan *Connection delConnection chan *Connection + logger Logger } func NewManager(tun io.ReadWriter) *Manager { @@ -24,9 +25,14 @@ func NewManager(tun io.ReadWriter) *Manager { accept: make(chan *DataFrame, 1024), newConnection: make(chan *Connection), delConnection: make(chan *Connection), + logger: DefaultLogger, } } +func (m *Manager) SetLogger(logger Logger) { + m.logger = logger +} + func (m *Manager) Run() { onReceiveQueue := make(chan bool) for { @@ -75,8 +81,9 @@ func (m *Manager) Connect() (*Connection, error) { Type: TypeRequest, } connection := &Connection{ - ID: df.ID, - TX: m.incoming, + ID: df.ID, + TX: m.incoming, + logger: DefaultLogger, } m.newConnection <- connection m.incoming <- df @@ -94,8 +101,9 @@ func (m *Manager) Accept() (*Connection, error) { return nil, WrongDataFrameTypeError{ShouldBe: TypeRequest} } connection := &Connection{ - ID: df.ID, - TX: m.incoming, + ID: df.ID, + TX: m.incoming, + logger: DefaultLogger, } m.newConnection <- connection