From 34585147443ed247b6c6d5474e73de123ad592f1 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Fri, 16 Dec 2016 22:35:54 +0700 Subject: [PATCH] add a method to open new Streams to the client --- client.go | 5 +++++ client_test.go | 6 ++++++ server.go | 1 + server_test.go | 3 +++ 4 files changed, 15 insertions(+) diff --git a/client.go b/client.go index 0e3e873e..d84d7402 100644 --- a/client.go +++ b/client.go @@ -111,6 +111,11 @@ func (c *Client) Listen() error { } } +// OpenStream opens a stream, for client-side created streams (i.e. odd streamIDs) +func (c *Client) OpenStream(id protocol.StreamID) (utils.Stream, error) { + return c.session.OpenStream(id) +} + // Close closes the connection func (c *Client) Close() error { _ = c.session.Close(nil) diff --git a/client_test.go b/client_test.go index 381473e6..236c9f35 100644 --- a/client_test.go +++ b/client_test.go @@ -82,6 +82,12 @@ var _ = Describe("Client", func() { Expect(err).ToNot(HaveOccurred()) }) + It("opens a stream", func() { + stream, err := client.OpenStream(1337) + Expect(err).ToNot(HaveOccurred()) + Expect(stream.StreamID()).To(Equal(protocol.StreamID(1337))) + }) + Context("handling packets", func() { It("errors on too large packets", func() { err := client.handlePacket(bytes.Repeat([]byte{'f'}, int(protocol.MaxPacketSize+1))) diff --git a/server.go b/server.go index fb8588cf..40b3e443 100644 --- a/server.go +++ b/server.go @@ -19,6 +19,7 @@ import ( // packetHandler handles packets type packetHandler interface { handlePacket(*receivedPacket) + OpenStream(protocol.StreamID) (utils.Stream, error) run() Close(error) error } diff --git a/server_test.go b/server_test.go index 5a44f367..d6bef47c 100644 --- a/server_test.go +++ b/server_test.go @@ -34,6 +34,9 @@ func (s *mockSession) Close(e error) error { return nil } +func (s *mockSession) OpenStream(id protocol.StreamID) (utils.Stream, error) { + return &stream{streamID: id}, nil +} func newMockSession(conn connection, v protocol.VersionNumber, connectionID protocol.ConnectionID, sCfg *handshake.ServerConfig, streamCallback StreamCallback, closeCallback closeCallback) (packetHandler, error) { return &mockSession{ connectionID: connectionID,