func Run(sock net.Listener, frameTypesToBeDumped []frames.Type) error {
	var conn net.Conn
	var err error
	var h2c = http2client.New()
	if frameTypesToBeDumped != nil && len(frameTypesToBeDumped) > 0 {
		h2c.AddFilterForIncomingFrames(makeFrameFilter(DumpIncoming, frameTypesToBeDumped))
		h2c.AddFilterForOutgoingFrames(makeFrameFilter(DumpOutgoing, frameTypesToBeDumped))
	}
	stopOnSigterm(sock)
	for {
		if conn, err = sock.Accept(); err != nil {
			return fmt.Errorf("Error while waiting for commands: %v", err.Error())
			stop(sock)
		}
		go executeCommandAndCloseConnection(h2c, conn, sock)
	}
}
Run the h2c process, i.e, the process started with 'h2c start'.

The h2c process keeps an Http2Client instance, reads Commands from the socket file,
and uses the Http2Client to execute these commands.

The socket will be closed when the h2c process is terminated.

frameTypesToBeDumped is a list of frame types that will be dumped to the console.
If it is nil, no frame will be dumped.
If it is frame.AllFrameTypes(), all frames will be dumped.
package daemon
import (
	"bufio"
	"fmt"
	"github.com/fstab/h2c/cli/cmdline"
	"github.com/fstab/h2c/cli/rpc"
	"github.com/fstab/h2c/cli/util"
	"github.com/fstab/h2c/http2client"
	"github.com/fstab/h2c/http2client/frames"
	"io"
	"net"
	"os"
	"os/signal"
	"strconv"
	"strings"
	"time"
)