PROTON-1309: go: set outgoing message window via electron interface. Added a session option and IncomingSession setter for outgoing window.
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/3569e03b Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/3569e03b Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/3569e03b Branch: refs/heads/master Commit: 3569e03b28b0f82c5a4e1004be6684f628c15aa8 Parents: d91131a Author: Alan Conway <acon...@redhat.com> Authored: Tue Oct 18 14:00:35 2016 -0400 Committer: Alan Conway <acon...@redhat.com> Committed: Tue Oct 18 14:01:52 2016 -0400 ---------------------------------------------------------------------- .../go/src/qpid.apache.org/electron/session.go | 35 +++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/3569e03b/proton-c/bindings/go/src/qpid.apache.org/electron/session.go ---------------------------------------------------------------------- diff --git a/proton-c/bindings/go/src/qpid.apache.org/electron/session.go b/proton-c/bindings/go/src/qpid.apache.org/electron/session.go index 66a8995..6dae354 100644 --- a/proton-c/bindings/go/src/qpid.apache.org/electron/session.go +++ b/proton-c/bindings/go/src/qpid.apache.org/electron/session.go @@ -36,17 +36,24 @@ type Session interface { type session struct { endpoint - pSession proton.Session - connection *connection - capacity uint + pSession proton.Session + connection *connection + incomingCapacity, outgoingWindow uint } // SessionOption can be passed when creating a Session type SessionOption func(*session) // IncomingCapacity returns a Session Option that sets the size (in bytes) of -// the sessions incoming data buffer.. -func IncomingCapacity(cap uint) SessionOption { return func(s *session) { s.capacity = cap } } +// the session's incoming data buffer. +func IncomingCapacity(bytes uint) SessionOption { + return func(s *session) { s.incomingCapacity = bytes } +} + +// OutgoingWindow returns a Session Option that sets the outgoing window size (in frames). +func OutgoingWindow(frames uint) SessionOption { + return func(s *session) { s.outgoingWindow = frames } +} // in proton goroutine func newSession(c *connection, es proton.Session, setting ...SessionOption) *session { @@ -59,7 +66,8 @@ func newSession(c *connection, es proton.Session, setting ...SessionOption) *ses set(s) } c.handler.sessions[s.pSession] = s - s.pSession.SetIncomingCapacity(s.capacity) + s.pSession.SetIncomingCapacity(s.incomingCapacity) + s.pSession.SetOutgoingWindow(s.outgoingWindow) s.pSession.Open() return s } @@ -108,21 +116,24 @@ func (s *session) Receiver(setting ...LinkOption) (rcv Receiver, err error) { // incoming request to open a session. type IncomingSession struct { incoming - h *handler - pSession proton.Session - capacity uint + h *handler + pSession proton.Session + incomingCapacity, outgoingWindow uint } func newIncomingSession(h *handler, ps proton.Session) *IncomingSession { return &IncomingSession{incoming: makeIncoming(ps), h: h, pSession: ps} } -// SetCapacity sets the session buffer capacity of an incoming session in bytes. -func (in *IncomingSession) SetCapacity(bytes uint) { in.capacity = bytes } +// SetIncomingCapacity sets the session buffer capacity of an incoming session in bytes. +func (in *IncomingSession) SetIncomingCapacity(bytes uint) { in.incomingCapacity = bytes } + +// SetOutgoingWindow sets the session outgoing window of an incoming session in frames. +func (in *IncomingSession) SetOutgoingWindow(frames uint) { in.outgoingWindow = frames } // Accept an incoming session endpoint. func (in *IncomingSession) Accept() Endpoint { return in.accept(func() Endpoint { - return newSession(in.h.connection, in.pSession, IncomingCapacity(in.capacity)) + return newSession(in.h.connection, in.pSession, IncomingCapacity(in.incomingCapacity), OutgoingWindow(in.outgoingWindow)) }) } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org