proxy update to vpp 20.05
[govpp.git] / api / api.go
index 977b02e..3089f24 100644 (file)
@@ -1,4 +1,4 @@
-//  Copyright (c) 2020 Cisco and/or its affiliates.
+//  Copyright (c) 2021 Cisco and/or its affiliates.
 //
 //  Licensed under the Apache License, Version 2.0 (the "License");
 //  you may not use this file except in compliance with the License.
@@ -25,10 +25,11 @@ import (
 type Connection interface {
        // NewStream creates a new stream for sending and receiving messages.
        // Context can be used to close the stream using cancel or timeout.
-       NewStream(ctx context.Context) (Stream, error)
+       NewStream(ctx context.Context, options ...StreamOption) (Stream, error)
 
        // Invoke can be used for a simple request-reply RPC.
-       // It creates stream and calls SendMsg with req and RecvMsg with reply.
+       // It creates stream and calls SendMsg with req and RecvMsg which returns
+       // reply.
        Invoke(ctx context.Context, req Message, reply Message) error
 }
 
@@ -57,6 +58,12 @@ type Stream interface {
        Close() error
 }
 
+// StreamOption allows customizing a Stream. Available options are:
+// - WithRequestSize
+// - WithReplySize
+// - WithReplyTimeout
+type StreamOption func(Stream)
+
 // ChannelProvider provides the communication channel with govpp core.
 type ChannelProvider interface {
        // NewAPIChannel returns a new channel for communication with VPP via govpp core.