// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/ads/googleads/v0/services/change_status_service.proto

package services // import "google.golang.org/genproto/googleapis/ads/googleads/v0/services"

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import resources "google.golang.org/genproto/googleapis/ads/googleads/v0/resources"
import _ "google.golang.org/genproto/googleapis/api/annotations"

import (
	context "golang.org/x/net/context"
	grpc "google.golang.org/grpc"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package

// Request message for '[ChangeStatusService.GetChangeStatus][google.ads.googleads.v0.services.ChangeStatusService.GetChangeStatus]'.
type GetChangeStatusRequest struct {
	// The resource name of the change status to fetch.
	ResourceName         string   `protobuf:"bytes,1,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *GetChangeStatusRequest) Reset()         { *m = GetChangeStatusRequest{} }
func (m *GetChangeStatusRequest) String() string { return proto.CompactTextString(m) }
func (*GetChangeStatusRequest) ProtoMessage()    {}
func (*GetChangeStatusRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_change_status_service_2dac1c94f57649f6, []int{0}
}
func (m *GetChangeStatusRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_GetChangeStatusRequest.Unmarshal(m, b)
}
func (m *GetChangeStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_GetChangeStatusRequest.Marshal(b, m, deterministic)
}
func (dst *GetChangeStatusRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_GetChangeStatusRequest.Merge(dst, src)
}
func (m *GetChangeStatusRequest) XXX_Size() int {
	return xxx_messageInfo_GetChangeStatusRequest.Size(m)
}
func (m *GetChangeStatusRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_GetChangeStatusRequest.DiscardUnknown(m)
}

var xxx_messageInfo_GetChangeStatusRequest proto.InternalMessageInfo

func (m *GetChangeStatusRequest) GetResourceName() string {
	if m != nil {
		return m.ResourceName
	}
	return ""
}

func init() {
	proto.RegisterType((*GetChangeStatusRequest)(nil), "google.ads.googleads.v0.services.GetChangeStatusRequest")
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4

// ChangeStatusServiceClient is the client API for ChangeStatusService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type ChangeStatusServiceClient interface {
	// Returns the requested change status in full detail.
	GetChangeStatus(ctx context.Context, in *GetChangeStatusRequest, opts ...grpc.CallOption) (*resources.ChangeStatus, error)
}

type changeStatusServiceClient struct {
	cc *grpc.ClientConn
}

func NewChangeStatusServiceClient(cc *grpc.ClientConn) ChangeStatusServiceClient {
	return &changeStatusServiceClient{cc}
}

func (c *changeStatusServiceClient) GetChangeStatus(ctx context.Context, in *GetChangeStatusRequest, opts ...grpc.CallOption) (*resources.ChangeStatus, error) {
	out := new(resources.ChangeStatus)
	err := c.cc.Invoke(ctx, "/google.ads.googleads.v0.services.ChangeStatusService/GetChangeStatus", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// ChangeStatusServiceServer is the server API for ChangeStatusService service.
type ChangeStatusServiceServer interface {
	// Returns the requested change status in full detail.
	GetChangeStatus(context.Context, *GetChangeStatusRequest) (*resources.ChangeStatus, error)
}

func RegisterChangeStatusServiceServer(s *grpc.Server, srv ChangeStatusServiceServer) {
	s.RegisterService(&_ChangeStatusService_serviceDesc, srv)
}

func _ChangeStatusService_GetChangeStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetChangeStatusRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChangeStatusServiceServer).GetChangeStatus(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.ads.googleads.v0.services.ChangeStatusService/GetChangeStatus",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChangeStatusServiceServer).GetChangeStatus(ctx, req.(*GetChangeStatusRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _ChangeStatusService_serviceDesc = grpc.ServiceDesc{
	ServiceName: "google.ads.googleads.v0.services.ChangeStatusService",
	HandlerType: (*ChangeStatusServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetChangeStatus",
			Handler:    _ChangeStatusService_GetChangeStatus_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "google/ads/googleads/v0/services/change_status_service.proto",
}

func init() {
	proto.RegisterFile("google/ads/googleads/v0/services/change_status_service.proto", fileDescriptor_change_status_service_2dac1c94f57649f6)
}

var fileDescriptor_change_status_service_2dac1c94f57649f6 = []byte{
	// 341 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x49, 0xcf, 0xcf, 0x4f,
	0xcf, 0x49, 0xd5, 0x4f, 0x4c, 0x29, 0xd6, 0x87, 0x30, 0x41, 0xac, 0x32, 0x03, 0xfd, 0xe2, 0xd4,
	0xa2, 0xb2, 0xcc, 0xe4, 0xd4, 0x62, 0xfd, 0xe4, 0x8c, 0xc4, 0xbc, 0xf4, 0xd4, 0xf8, 0xe2, 0x92,
	0xc4, 0x92, 0xd2, 0xe2, 0x78, 0xa8, 0xb0, 0x5e, 0x41, 0x51, 0x7e, 0x49, 0xbe, 0x90, 0x02, 0x44,
	0x8b, 0x5e, 0x62, 0x4a, 0xb1, 0x1e, 0x5c, 0xb7, 0x5e, 0x99, 0x81, 0x1e, 0x4c, 0xb7, 0x94, 0x29,
	0x2e, 0xf3, 0x8b, 0x52, 0x8b, 0xf3, 0x4b, 0x8b, 0x30, 0x2c, 0x80, 0x18, 0x2c, 0x25, 0x03, 0xd3,
	0x56, 0x90, 0xa9, 0x9f, 0x98, 0x97, 0x97, 0x5f, 0x92, 0x58, 0x92, 0x99, 0x9f, 0x07, 0x95, 0x55,
	0xb2, 0xe5, 0x12, 0x73, 0x4f, 0x2d, 0x71, 0x06, 0xeb, 0x0b, 0x06, 0x6b, 0x0b, 0x4a, 0x2d, 0x2c,
	0x4d, 0x2d, 0x2e, 0x11, 0x52, 0xe6, 0xe2, 0x85, 0x19, 0x1c, 0x9f, 0x97, 0x98, 0x9b, 0x2a, 0xc1,
	0xa8, 0xc0, 0xa8, 0xc1, 0x19, 0xc4, 0x03, 0x13, 0xf4, 0x4b, 0xcc, 0x4d, 0x35, 0x3a, 0xc3, 0xc8,
	0x25, 0x8c, 0xac, 0x39, 0x18, 0xe2, 0x58, 0xa1, 0x2d, 0x8c, 0x5c, 0xfc, 0x68, 0xe6, 0x0a, 0x59,
	0xe8, 0x11, 0xf2, 0xa2, 0x1e, 0x76, 0xa7, 0x48, 0xe9, 0xe3, 0xd4, 0x09, 0xf7, 0xba, 0x1e, 0xb2,
	0x3e, 0x25, 0xb3, 0xa6, 0xcb, 0x4f, 0x26, 0x33, 0x19, 0x08, 0xe9, 0x81, 0x82, 0xa7, 0x1a, 0xc5,
	0x1b, 0xb6, 0xc9, 0xa5, 0xc5, 0x25, 0xf9, 0xb9, 0xa9, 0x45, 0xc5, 0xfa, 0x5a, 0xd0, 0xf0, 0x82,
	0x68, 0xd2, 0xd7, 0xaa, 0x75, 0xba, 0xc1, 0xc8, 0xa5, 0x92, 0x9c, 0x9f, 0x4b, 0xd0, 0xa1, 0x4e,
	0x12, 0x58, 0x3c, 0x1d, 0x00, 0x0a, 0xd0, 0x00, 0xc6, 0x28, 0x0f, 0xa8, 0xee, 0xf4, 0xfc, 0x9c,
	0xc4, 0xbc, 0x74, 0xbd, 0xfc, 0xa2, 0x74, 0xfd, 0xf4, 0xd4, 0x3c, 0x70, 0x70, 0xc3, 0xe2, 0xad,
	0x20, 0xb3, 0x18, 0x77, 0x32, 0xb1, 0x86, 0x31, 0x16, 0x31, 0x31, 0xbb, 0x3b, 0x3a, 0xae, 0x62,
	0x52, 0x70, 0x87, 0x18, 0xe8, 0x98, 0x52, 0xac, 0x07, 0x61, 0x82, 0x58, 0x61, 0x06, 0x7a, 0x50,
	0x8b, 0x8b, 0x4f, 0xc1, 0x94, 0xc4, 0x38, 0xa6, 0x14, 0xc7, 0xc0, 0x95, 0xc4, 0x84, 0x19, 0xc4,
	0xc0, 0x94, 0x24, 0xb1, 0x81, 0x1d, 0x60, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x60, 0xd2,
	0x4a, 0xa6, 0x02, 0x00, 0x00,
}
