This is an automated email from the ASF dual-hosted git repository.

dinglei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-client-go.git


The following commit(s) were added to refs/heads/master by this push:
     new 52006e3  fix(client):throw exception when producer or consumer miss 
model (#269)
52006e3 is described below

commit 52006e3aa28b104e7112bb608bc39e52c6a1dbe3
Author: rongtong <[email protected]>
AuthorDate: Tue Oct 29 13:56:06 2019 +0800

    fix(client):throw exception when producer or consumer miss model (#269)
---
 core/producer.go      |  5 ++++-
 core/push_consumer.go | 43 ++++++++++++++++++-------------------------
 2 files changed, 22 insertions(+), 26 deletions(-)

diff --git a/core/producer.go b/core/producer.go
index 9c6901f..2e1279a 100644
--- a/core/producer.go
+++ b/core/producer.go
@@ -85,8 +85,11 @@ func newDefaultProducer(config *ProducerConfig) 
(*defaultProducer, error) {
        var cproduer *C.struct_CProducer
        if config.ProducerModel == OrderlyProducer {
                cproduer = C.CreateOrderlyProducer(cs)
-       } else {
+       } else if config.ProducerModel == CommonProducer {
                cproduer = C.CreateProducer(cs)
+       } else {
+               C.free(unsafe.Pointer(cs))
+               return nil, errors.New("ProducerModel is invalid or empty")
        }
        C.free(unsafe.Pointer(cs))
 
diff --git a/core/push_consumer.go b/core/push_consumer.go
index bd7b68a..0dc27c4 100644
--- a/core/push_consumer.go
+++ b/core/push_consumer.go
@@ -185,33 +185,26 @@ func newPushConsumer(config *PushConsumerConfig) 
(PushConsumer, error) {
                }
        }
 
-       if config.Model != 0 {
-               var mode C.CMessageModel
-               switch config.Model {
-               case BroadCasting:
-                       mode = C.BROADCASTING
-               case Clustering:
-                       mode = C.CLUSTERING
-               }
-               err = rmqError(C.SetPushConsumerMessageModel(cconsumer, mode))
-
-               if err != NIL {
-                       return nil, err
-               }
-
+       if config.Model == BroadCasting {
+               err = rmqError(C.SetPushConsumerMessageModel(cconsumer, 
C.BROADCASTING))
+       } else if config.Model == Clustering {
+               err = rmqError(C.SetPushConsumerMessageModel(cconsumer, 
C.CLUSTERING))
+       } else {
+               return nil, errors.New("model is invalid or empty")
+       }
+       if err != NIL {
+               return nil, err
        }
 
-       if config.ConsumerModel != 0 {
-               switch config.ConsumerModel {
-               case Orderly:
-                       err = 
rmqError(C.RegisterMessageCallbackOrderly(cconsumer, 
(C.MessageCallBack)(unsafe.Pointer(C.callback_cgo))))
-               case CoCurrently:
-                       err = rmqError(C.RegisterMessageCallback(cconsumer, 
(C.MessageCallBack)(unsafe.Pointer(C.callback_cgo))))
-               }
-               if err != NIL {
-                       return nil, err
-               }
-
+       if config.ConsumerModel == Orderly {
+               err = rmqError(C.RegisterMessageCallbackOrderly(cconsumer, 
(C.MessageCallBack)(unsafe.Pointer(C.callback_cgo))))
+       } else if config.ConsumerModel == CoCurrently {
+               err = rmqError(C.RegisterMessageCallback(cconsumer, 
(C.MessageCallBack)(unsafe.Pointer(C.callback_cgo))))
+       } else {
+               return nil, errors.New("consumer model is invalid or empty")
+       }
+       if err != NIL {
+               return nil, err
        }
 
        consumer.cconsumer = cconsumer

Reply via email to