server: allow multiple connections

This commit is contained in:
Ethan Buchman 2015-11-29 03:44:08 -05:00
parent c21c2ed69b
commit fe782cb8ac
2 changed files with 13 additions and 5 deletions

View File

@ -2,7 +2,6 @@ package example
import (
"encoding/binary"
"fmt"
. "github.com/tendermint/go-common"
"github.com/tendermint/tmsp/types"
@ -40,7 +39,6 @@ func (dapp *CounterApplication) AppendTx(tx []byte) ([]types.Event, types.RetCod
}
func (dapp *CounterApplication) GetHash() ([]byte, types.RetCode) {
fmt.Println("getting hash!")
hash := make([]byte, 32)
binary.PutVarint(hash, int64(dapp.hashCount))
dapp.hashCount += 1

View File

@ -11,6 +11,8 @@ import (
"github.com/tendermint/tmsp/types"
)
var maxNumberConnections = 2
func StartListener(protoAddr string, app types.Application) (net.Listener, error) {
parts := strings.SplitN(protoAddr, "://", 2)
proto, addr := parts[0], parts[1]
@ -22,7 +24,11 @@ func StartListener(protoAddr string, app types.Application) (net.Listener, error
// A goroutine to accept a connection.
go func() {
semaphore := make(chan struct{}, maxNumberConnections)
for {
semaphore <- struct{}{}
// Accept a connection
conn, err := ln.Accept()
if err != nil {
@ -38,9 +44,13 @@ func StartListener(protoAddr string, app types.Application) (net.Listener, error
// Pull responses from 'responses' and write them to conn.
go handleResponses(connClosed, responses, conn)
// Wait until connection is closed
<-connClosed
fmt.Println("Connection was closed. Waiting for new connection...")
go func() {
// Wait until connection is closed
<-connClosed
fmt.Println("Connection was closed. Waiting for new connection...")
<-semaphore
}()
}
}()