Refactoring and fixes
[govpp.git] / core / stream.go
index 3d417f1..363cc9f 100644 (file)
@@ -20,14 +20,12 @@ import (
        "fmt"
        "reflect"
        "sync"
-       "sync/atomic"
        "time"
 
        "git.fd.io/govpp.git/api"
 )
 
 type Stream struct {
-       id      uint32
        conn    *Connection
        ctx     context.Context
        channel *Channel
@@ -57,15 +55,9 @@ func (c *Connection) NewStream(ctx context.Context, options ...api.StreamOption)
        for _, option := range options {
                option(s)
        }
-       // create and store a new channel
-       s.id = atomic.AddUint32(&c.maxChannelID, 1) & 0x7fff
-       s.channel = newChannel(uint16(s.id), c, c.codec, c, s.requestSize, s.replySize)
-       s.channel.SetReplyTimeout(s.replyTimeout)
 
-       // store API channel within the client
-       c.channelsLock.Lock()
-       c.channels[uint16(s.id)] = s.channel
-       c.channelsLock.Unlock()
+       s.channel = c.newChannel(s.requestSize, s.replySize)
+       s.channel.SetReplyTimeout(s.replyTimeout)
 
        // Channel.watchRequests are not started here intentionally, because
        // requests are sent directly by SendMsg.