// Code generated by Kitex v0.13.1. DO NOT EDIT.

package pb

import (
	"context"

	"github.com/cloudwego/kitex/pkg/streaming"
	"github.com/cloudwego/prutal"
)

// Request represents a message sent from client to server
type Request struct {
	Message string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` // The message content
}

func (x *Request) Reset() { *x = Request{} }

func (x *Request) Marshal(in []byte) ([]byte, error) { return prutal.MarshalAppend(in, x) }

func (x *Request) Unmarshal(in []byte) error { return prutal.Unmarshal(in, x) }

func (x *Request) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

// Response represents a message sent from server to client
type Response struct {
	Message string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` // The response content
}

func (x *Response) Reset() { *x = Response{} }

func (x *Response) Marshal(in []byte) ([]byte, error) { return prutal.MarshalAppend(in, x) }

func (x *Response) Unmarshal(in []byte) error { return prutal.Unmarshal(in, x) }

func (x *Response) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

type StreamingService interface {
	StreamRequestEcho(stream StreamingService_StreamRequestEchoServer) (err error)
	StreamResponseEcho(req *Request, stream StreamingService_StreamResponseEchoServer) (err error)
	BidirectionalEcho(stream StreamingService_BidirectionalEchoServer) (err error)
	UnaryEcho(ctx context.Context, req *Request) (res *Response, err error)
}

type StreamingService_StreamRequestEchoServer interface {
	streaming.Stream
	Recv() (*Request, error)
	SendAndClose(*Response) error
}

type StreamingService_StreamResponseEchoServer interface {
	streaming.Stream
	Send(*Response) error
}

type StreamingService_BidirectionalEchoServer interface {
	streaming.Stream
	Recv() (*Request, error)
	Send(*Response) error
}
