// // rhctl // // Copyright (C) 2009-2016 Christian Pointner // // This file is part of rhctl. // // rhctl is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // rhctl is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with rhctl. If not, see . // package main import ( "net" ) type NopTCPInterface struct { ln net.Listener ctrl *SwitchControl } func handleClient(con net.Conn, ctrl *SwitchControl) { con.Write([]byte("hello world")) con.Close() } func (nop *NopTCPInterface) Run() { rhdl.Printf("NopTCP: handler running...") for { con, err := nop.ln.Accept() if err != nil { switch err.(type) { case *net.OpError: if !err.(*net.OpError).Temporary() { rhl.Printf("NopTCP: server exiting: %s", err) return } default: rhl.Printf("NopTCP: server exiting: %s", err) return } } go handleClient(con, nop.ctrl) } } func NopTCPInit(conf *Config, ctrl *SwitchControl) (nop *NopTCPInterface, err error) { nop = &NopTCPInterface{} nop.ctrl = ctrl if nop.ln, err = net.Listen("tcp", conf.Clients.Noptcp.Address); err != nil { return } rhdl.Printf("NopTCP: listening on %s", nop.ln.Addr()) return }