Commit 3573456c authored by AlexStocks's avatar AlexStocks

Update: add notify rpc example

parent a34641aa
...@@ -115,8 +115,17 @@ func testJSON() { ...@@ -115,8 +115,17 @@ func testJSON() {
testRsp := rpc_examples.TestRsp{} testRsp := rpc_examples.TestRsp{}
addr := net.JoinHostPort(conf.ServerHost, strconv.Itoa(conf.ServerPort)) addr := net.JoinHostPort(conf.ServerHost, strconv.Itoa(conf.ServerPort))
err := client.Call(rpc.CodecJson, addr, ts.Service(), "Test", &testReq, eventReq := rpc_examples.EventReq{A:"hello"}
&testRsp) err := client.Notify(rpc.CodecJson, addr, ts.Service(), "Event", &eventReq,
rpc.CallRequestTimeout(100e6), rpc.CallResponseTimeout(100e6))
if err != nil {
log.Error("client.Call(Json, TestService::Event) = error:%s", jerrors.ErrorStack(err))
return
}
log.Info("TestService::Event(Json, req:%#v)", eventReq)
err = client.Call(rpc.CodecJson, addr, ts.Service(), "Test", &testReq, &testRsp,
rpc.CallRequestTimeout(100e6), rpc.CallResponseTimeout(100e6))
if err != nil { if err != nil {
log.Error("client.Call(Json, TestService::Test) = error:%s", jerrors.ErrorStack(err)) log.Error("client.Call(Json, TestService::Test) = error:%s", jerrors.ErrorStack(err))
return return
...@@ -125,7 +134,8 @@ func testJSON() { ...@@ -125,7 +134,8 @@ func testJSON() {
addReq := rpc_examples.AddReq{1, 10} addReq := rpc_examples.AddReq{1, 10}
addRsp := rpc_examples.AddRsp{} addRsp := rpc_examples.AddRsp{}
err = client.Call(rpc.CodecJson, addr, ts.Service(), "Add", &addReq, &addRsp) err = client.Call(rpc.CodecJson, addr, ts.Service(), "Add", &addReq, &addRsp,
rpc.CallRequestTimeout(100e6), rpc.CallResponseTimeout(100e6))
if err != nil { if err != nil {
log.Error("client.Call(Json, TestService::Add) = error:%s", jerrors.ErrorStack(err)) log.Error("client.Call(Json, TestService::Add) = error:%s", jerrors.ErrorStack(err))
return return
...@@ -134,7 +144,8 @@ func testJSON() { ...@@ -134,7 +144,8 @@ func testJSON() {
errReq := rpc_examples.ErrReq{1} errReq := rpc_examples.ErrReq{1}
errRsp := rpc_examples.ErrRsp{} errRsp := rpc_examples.ErrRsp{}
err = client.Call(rpc.CodecJson, addr, ts.Service(), "Err", &errReq, &errRsp) err = client.Call(rpc.CodecJson, addr, ts.Service(), "Err", &errReq, &errRsp,
rpc.CallRequestTimeout(100e6), rpc.CallResponseTimeout(100e6))
if err != nil { if err != nil {
// error test case, this invocation should step into this branch. // error test case, this invocation should step into this branch.
log.Error("client.Call(Json, TestService::Err) = error:%s", jerrors.ErrorStack(err)) log.Error("client.Call(Json, TestService::Err) = error:%s", jerrors.ErrorStack(err))
...@@ -149,8 +160,17 @@ func testProtobuf() { ...@@ -149,8 +160,17 @@ func testProtobuf() {
testRsp := rpc_examples.TestRsp{} testRsp := rpc_examples.TestRsp{}
addr := net.JoinHostPort(conf.ServerHost, strconv.Itoa(conf.ServerPort)) addr := net.JoinHostPort(conf.ServerHost, strconv.Itoa(conf.ServerPort))
err := client.Call(rpc.CodecProtobuf, addr, ts.Service(), "Test", &testReq, eventReq := rpc_examples.EventReq{A:"hello"}
&testRsp) err := client.Notify(rpc.CodecProtobuf, addr, ts.Service(), "Event", &eventReq,
rpc.CallRequestTimeout(100e6), rpc.CallResponseTimeout(100e6))
if err != nil {
log.Error("client.Call(Protobuf, TestService::Event) = error:%s", jerrors.ErrorStack(err))
return
}
log.Info("TestService::Event(Protobuf, req:%#v)", eventReq)
err = client.Call(rpc.CodecProtobuf, addr, ts.Service(), "Test", &testReq, &testRsp,
rpc.CallRequestTimeout(500e6), rpc.CallResponseTimeout(500e6))
if err != nil { if err != nil {
log.Error("client.Call(protobuf, TestService::Test) = error:%s", jerrors.ErrorStack(err)) log.Error("client.Call(protobuf, TestService::Test) = error:%s", jerrors.ErrorStack(err))
return return
...@@ -159,8 +179,8 @@ func testProtobuf() { ...@@ -159,8 +179,8 @@ func testProtobuf() {
addReq := rpc_examples.AddReq{1, 10} addReq := rpc_examples.AddReq{1, 10}
addRsp := rpc_examples.AddRsp{} addRsp := rpc_examples.AddRsp{}
err = client.Call(rpc.CodecProtobuf, addr, ts.Service(), "Add", &addReq, err = client.Call(rpc.CodecProtobuf, addr, ts.Service(), "Add", &addReq, &addRsp,
&addRsp) rpc.CallRequestTimeout(500e6), rpc.CallResponseTimeout(500e6))
if err != nil { if err != nil {
log.Error("client.Call(protobuf, TestService::Add) = error:%s", jerrors.ErrorStack(err)) log.Error("client.Call(protobuf, TestService::Add) = error:%s", jerrors.ErrorStack(err))
return return
...@@ -169,8 +189,8 @@ func testProtobuf() { ...@@ -169,8 +189,8 @@ func testProtobuf() {
errReq := rpc_examples.ErrReq{1} errReq := rpc_examples.ErrReq{1}
errRsp := rpc_examples.ErrRsp{} errRsp := rpc_examples.ErrRsp{}
err = client.Call(rpc.CodecProtobuf, addr, ts.Service(), "Err", &errReq, err = client.Call(rpc.CodecProtobuf, addr, ts.Service(), "Err", &errReq, &errRsp,
&errRsp) rpc.CallRequestTimeout(500e6), rpc.CallResponseTimeout(500e6))
if err != nil { if err != nil {
// error test case, this invocation should step into this branch. // error test case, this invocation should step into this branch.
log.Error("client.Call(protobuf, TestService::Err) = error:%s", jerrors.ErrorStack(err)) log.Error("client.Call(protobuf, TestService::Err) = error:%s", jerrors.ErrorStack(err))
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
AddRsp AddRsp
ErrReq ErrReq
ErrRsp ErrRsp
EventReq
*/ */
package rpc_examples package rpc_examples
...@@ -89,6 +90,14 @@ func (m *ErrRsp) Reset() { *m = ErrRsp{} } ...@@ -89,6 +90,14 @@ func (m *ErrRsp) Reset() { *m = ErrRsp{} }
func (*ErrRsp) ProtoMessage() {} func (*ErrRsp) ProtoMessage() {}
func (*ErrRsp) Descriptor() ([]byte, []int) { return fileDescriptorService, []int{5} } func (*ErrRsp) Descriptor() ([]byte, []int) { return fileDescriptorService, []int{5} }
type EventReq struct {
A string `protobuf:"bytes,1,opt,name=A" json:"A"`
}
func (m *EventReq) Reset() { *m = EventReq{} }
func (*EventReq) ProtoMessage() {}
func (*EventReq) Descriptor() ([]byte, []int) { return fileDescriptorService, []int{6} }
func init() { func init() {
proto.RegisterType((*TestReq)(nil), "rpc_examples.TestReq") proto.RegisterType((*TestReq)(nil), "rpc_examples.TestReq")
proto.RegisterType((*TestRsp)(nil), "rpc_examples.TestRsp") proto.RegisterType((*TestRsp)(nil), "rpc_examples.TestRsp")
...@@ -96,6 +105,7 @@ func init() { ...@@ -96,6 +105,7 @@ func init() {
proto.RegisterType((*AddRsp)(nil), "rpc_examples.AddRsp") proto.RegisterType((*AddRsp)(nil), "rpc_examples.AddRsp")
proto.RegisterType((*ErrReq)(nil), "rpc_examples.ErrReq") proto.RegisterType((*ErrReq)(nil), "rpc_examples.ErrReq")
proto.RegisterType((*ErrRsp)(nil), "rpc_examples.ErrRsp") proto.RegisterType((*ErrRsp)(nil), "rpc_examples.ErrRsp")
proto.RegisterType((*EventReq)(nil), "rpc_examples.EventReq")
} }
func (this *TestReq) VerboseEqual(that interface{}) error { func (this *TestReq) VerboseEqual(that interface{}) error {
if that == nil { if that == nil {
...@@ -475,6 +485,66 @@ func (this *ErrRsp) Equal(that interface{}) bool { ...@@ -475,6 +485,66 @@ func (this *ErrRsp) Equal(that interface{}) bool {
} }
return true return true
} }
func (this *EventReq) VerboseEqual(that interface{}) error {
if that == nil {
if this == nil {
return nil
}
return fmt.Errorf("that == nil && this != nil")
}
that1, ok := that.(*EventReq)
if !ok {
that2, ok := that.(EventReq)
if ok {
that1 = &that2
} else {
return fmt.Errorf("that is not of type *EventReq")
}
}
if that1 == nil {
if this == nil {
return nil
}
return fmt.Errorf("that is type *EventReq but is nil && this != nil")
} else if this == nil {
return fmt.Errorf("that is type *EventReq but is not nil && this == nil")
}
if this.A != that1.A {
return fmt.Errorf("A this(%v) Not Equal that(%v)", this.A, that1.A)
}
return nil
}
func (this *EventReq) Equal(that interface{}) bool {
if that == nil {
if this == nil {
return true
}
return false
}
that1, ok := that.(*EventReq)
if !ok {
that2, ok := that.(EventReq)
if ok {
that1 = &that2
} else {
return false
}
}
if that1 == nil {
if this == nil {
return true
}
return false
} else if this == nil {
return false
}
if this.A != that1.A {
return false
}
return true
}
func (this *TestReq) GoString() string { func (this *TestReq) GoString() string {
if this == nil { if this == nil {
return "nil" return "nil"
...@@ -538,6 +608,16 @@ func (this *ErrRsp) GoString() string { ...@@ -538,6 +608,16 @@ func (this *ErrRsp) GoString() string {
s = append(s, "}") s = append(s, "}")
return strings.Join(s, "") return strings.Join(s, "")
} }
func (this *EventReq) GoString() string {
if this == nil {
return "nil"
}
s := make([]string, 0, 5)
s = append(s, "&rpc_examples.EventReq{")
s = append(s, "A: "+fmt.Sprintf("%#v", this.A)+",\n")
s = append(s, "}")
return strings.Join(s, "")
}
func valueToGoStringService(v interface{}, typ string) string { func valueToGoStringService(v interface{}, typ string) string {
rv := reflect.ValueOf(v) rv := reflect.ValueOf(v)
if rv.IsNil() { if rv.IsNil() {
...@@ -685,6 +765,28 @@ func (m *ErrRsp) MarshalTo(dAtA []byte) (int, error) { ...@@ -685,6 +765,28 @@ func (m *ErrRsp) MarshalTo(dAtA []byte) (int, error) {
return i, nil return i, nil
} }
func (m *EventReq) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalTo(dAtA)
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *EventReq) MarshalTo(dAtA []byte) (int, error) {
var i int
_ = i
var l int
_ = l
dAtA[i] = 0xa
i++
i = encodeVarintService(dAtA, i, uint64(len(m.A)))
i += copy(dAtA[i:], m.A)
return i, nil
}
func encodeFixed64Service(dAtA []byte, offset int, v uint64) int { func encodeFixed64Service(dAtA []byte, offset int, v uint64) int {
dAtA[offset] = uint8(v) dAtA[offset] = uint8(v)
dAtA[offset+1] = uint8(v >> 8) dAtA[offset+1] = uint8(v >> 8)
...@@ -761,6 +863,14 @@ func (m *ErrRsp) Size() (n int) { ...@@ -761,6 +863,14 @@ func (m *ErrRsp) Size() (n int) {
return n return n
} }
func (m *EventReq) Size() (n int) {
var l int
_ = l
l = len(m.A)
n += 1 + l + sovService(uint64(l))
return n
}
func sovService(x uint64) (n int) { func sovService(x uint64) (n int) {
for { for {
n++ n++
...@@ -837,6 +947,16 @@ func (this *ErrRsp) String() string { ...@@ -837,6 +947,16 @@ func (this *ErrRsp) String() string {
}, "") }, "")
return s return s
} }
func (this *EventReq) String() string {
if this == nil {
return "nil"
}
s := strings.Join([]string{`&EventReq{`,
`A:` + fmt.Sprintf("%v", this.A) + `,`,
`}`,
}, "")
return s
}
func valueToStringService(v interface{}) string { func valueToStringService(v interface{}) string {
rv := reflect.ValueOf(v) rv := reflect.ValueOf(v)
if rv.IsNil() { if rv.IsNil() {
...@@ -1356,6 +1476,85 @@ func (m *ErrRsp) Unmarshal(dAtA []byte) error { ...@@ -1356,6 +1476,85 @@ func (m *ErrRsp) Unmarshal(dAtA []byte) error {
} }
return nil return nil
} }
func (m *EventReq) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowService
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: EventReq: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: EventReq: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field A", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowService
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthService
}
postIndex := iNdEx + intStringLen
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.A = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipService(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthService
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipService(dAtA []byte) (n int, err error) { func skipService(dAtA []byte) (n int, err error) {
l := len(dAtA) l := len(dAtA)
iNdEx := 0 iNdEx := 0
...@@ -1464,7 +1663,7 @@ var ( ...@@ -1464,7 +1663,7 @@ var (
func init() { proto.RegisterFile("service.proto", fileDescriptorService) } func init() { proto.RegisterFile("service.proto", fileDescriptorService) }
var fileDescriptorService = []byte{ var fileDescriptorService = []byte{
// 244 bytes of a gzipped FileDescriptorProto // 254 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2d, 0x4e, 0x2d, 0x2a, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2d, 0x4e, 0x2d, 0x2a,
0xcb, 0x4c, 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x29, 0x2a, 0x48, 0x8e, 0x4f, 0xcb, 0x4c, 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x29, 0x2a, 0x48, 0x8e, 0x4f,
0xad, 0x48, 0xcc, 0x2d, 0xc8, 0x49, 0x2d, 0x96, 0xd2, 0x4d, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0xad, 0x48, 0xcc, 0x2d, 0xc8, 0x49, 0x2d, 0x96, 0xd2, 0x4d, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2,
...@@ -1475,10 +1674,10 @@ var fileDescriptorService = []byte{ ...@@ -1475,10 +1674,10 @@ var fileDescriptorService = []byte{
0x82, 0x19, 0x59, 0xcc, 0x59, 0x49, 0x16, 0x6a, 0x4c, 0x71, 0x01, 0x36, 0x63, 0x94, 0x0c, 0xb8, 0x82, 0x19, 0x59, 0xcc, 0x59, 0x49, 0x16, 0x6a, 0x4c, 0x71, 0x01, 0x36, 0x63, 0x94, 0x0c, 0xb8,
0xd8, 0x1c, 0x53, 0x52, 0x50, 0x2c, 0x61, 0xc5, 0x62, 0x09, 0x5c, 0xcc, 0x49, 0x49, 0x01, 0xa2, 0xd8, 0x1c, 0x53, 0x52, 0x50, 0x2c, 0x61, 0xc5, 0x62, 0x09, 0x5c, 0xcc, 0x49, 0x49, 0x01, 0xa2,
0xa3, 0xb8, 0x40, 0x48, 0x8c, 0x8b, 0x39, 0xb8, 0x34, 0x17, 0x45, 0x0f, 0x48, 0x40, 0x49, 0x86, 0xa3, 0xb8, 0x40, 0x48, 0x8c, 0x8b, 0x39, 0xb8, 0x34, 0x17, 0x45, 0x0f, 0x48, 0x40, 0x49, 0x86,
0x8b, 0xcd, 0xb5, 0xa8, 0x08, 0x87, 0x99, 0x30, 0x59, 0x64, 0xf7, 0x20, 0x64, 0x9d, 0x4c, 0x4e, 0x8b, 0xcd, 0xb5, 0xa8, 0x08, 0x87, 0x99, 0x30, 0x59, 0x64, 0xf7, 0x20, 0xc9, 0xca, 0x71, 0x71,
0x3c, 0x94, 0x63, 0xb8, 0xf0, 0x50, 0x8e, 0xe1, 0xc6, 0x43, 0x39, 0x86, 0x07, 0x0f, 0xe5, 0x18, 0xb8, 0x96, 0xa5, 0xe6, 0xe1, 0xf2, 0xb6, 0x93, 0xc9, 0x89, 0x87, 0x72, 0x0c, 0x17, 0x1e, 0xca,
0x3f, 0x3c, 0x94, 0x63, 0x6c, 0x78, 0x24, 0xc7, 0xb8, 0xe2, 0x91, 0x1c, 0xe3, 0x89, 0x47, 0x72, 0x31, 0xdc, 0x78, 0x28, 0xc7, 0xf0, 0xe0, 0xa1, 0x1c, 0xe3, 0x87, 0x87, 0x72, 0x8c, 0x0d, 0x8f,
0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0xf8, 0xe2, 0x91, 0x1c, 0xc3, 0x87, 0x47, 0xe4, 0x18, 0x57, 0x3c, 0x92, 0x63, 0x3c, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07,
0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x00, 0x02, 0x00, 0x00, 0xff, 0xff, 0x93, 0x7b, 0x45, 0x26, 0x8f, 0xe4, 0x18, 0x5f, 0x3c, 0x92, 0x63, 0xf8, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x06,
0x78, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x23, 0x67, 0x16, 0xad, 0x98, 0x01, 0x00, 0x00,
} }
...@@ -50,3 +50,7 @@ message ErrReq { ...@@ -50,3 +50,7 @@ message ErrReq {
message ErrRsp { message ErrRsp {
optional int32 A = 1 [(gogoproto.nullable) = false]; optional int32 A = 1 [(gogoproto.nullable) = false];
} }
message EventReq {
optional string A = 1 [(gogoproto.nullable) = false];
}
package rpc_examples package rpc_examples
import ( import (
log "github.com/AlexStocks/log4go"
)
import (
jerrors "github.com/juju/errors" jerrors "github.com/juju/errors"
// "errors"
) )
type TestService struct { type TestService struct {
...@@ -30,3 +33,8 @@ func (r *TestService) Add(req *AddReq, rsp *AddRsp) error { ...@@ -30,3 +33,8 @@ func (r *TestService) Add(req *AddReq, rsp *AddRsp) error {
func (r *TestService) Err(req *ErrReq, rsp *ErrRsp) error { func (r *TestService) Err(req *ErrReq, rsp *ErrRsp) error {
return jerrors.New("this is a error test") return jerrors.New("this is a error test")
} }
func (r *TestService) Event(req *EventReq) error {
log.Info("got event %s", req.A)
return nil
}
...@@ -21,7 +21,6 @@ import ( ...@@ -21,7 +21,6 @@ import (
import ( import (
"github.com/AlexStocks/getty-examples/rpc/proto" "github.com/AlexStocks/getty-examples/rpc/proto"
"github.com/AlexStocks/getty/rpc" "github.com/AlexStocks/getty/rpc"
"github.com/AlexStocks/goext/log"
"github.com/AlexStocks/goext/net" "github.com/AlexStocks/goext/net"
log "github.com/AlexStocks/log4go" log "github.com/AlexStocks/log4go"
jerrors "github.com/juju/errors" jerrors "github.com/juju/errors"
...@@ -41,8 +40,6 @@ func main() { ...@@ -41,8 +40,6 @@ func main() {
initProfiling() initProfiling()
initServer() initServer()
gxlog.CInfo("%s starts successfull! its version=%s, its listen ends=%s:%s\n",
conf.AppName, Version, conf.Host, conf.Ports)
log.Info("%s starts successfull! its version=%s, its listen ends=%s:%s\n", log.Info("%s starts successfull! its version=%s, its listen ends=%s:%s\n",
conf.AppName, Version, conf.Host, conf.Ports) conf.AppName, Version, conf.Host, conf.Ports)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment