feature: add mutil invoke method
diff --git a/src/dubbo_invoker.erl b/src/dubbo_invoker.erl
index 895a6b1..21138f7 100644
--- a/src/dubbo_invoker.erl
+++ b/src/dubbo_invoker.erl
@@ -11,7 +11,7 @@
 
 -include("dubbo.hrl").
 %% API
--export([invoke_request/2,invoke_request/5]).
+-export([invoke_request/2,invoke_request/3,invoke_request/5]).
 
 -spec invoke_request(Interface::binary(),Request::#dubbo_request{})->
     {ok,reference()}|
@@ -20,6 +20,14 @@
 invoke_request(Interface,Request)->
     invoke_request(Interface,Request,[],#{},self()).
 
+-spec invoke_request(Interface::binary(),Request::#dubbo_request{},RequestOption::map())->
+    {ok,reference()}|
+    {ok,reference(),Data::any(),RpcContent::list()}|
+    {error,Reason::timeout|no_provider|any()}.
+invoke_request(Interface,Request,RequestOption)->
+    invoke_request(Interface,Request,maps:get(ctx,RequestOption,[]),RequestOption,self()).
+
+
 -spec invoke_request(Interface::binary(),Request::#dubbo_request{},RpcContext::list(),RequestState::map(),CallBackPid::pid())->
     {ok,reference()}|
     {ok,reference(),Data::any(),RpcContent::list()}|
diff --git a/test/dubbo_service_type_list.erl b/test/dubbo_service_type_list.erl
index 1f01868..863e165 100644
--- a/test/dubbo_service_type_list.erl
+++ b/test/dubbo_service_type_list.erl
@@ -8,6 +8,7 @@
 get_list()->
     [
         {userInfoRequest,<<"com.ifcoder.demo.bean.UserInfoRequest">>,record_info(fields,userInfoRequest)},
+        {list,<<"java.util.List">>,record_info(fields,list)},
         {userInfo,<<"com.ifcoder.demo.bean.UserInfo">>,record_info(fields,userInfo)},
         {userRes,<<"com.ifcoder.demo.bean.UserRes">>,record_info(fields,userRes)}    ].
 
diff --git a/test/user.erl b/test/user.erl
index 4f905f1..5ff512b 100644
--- a/test/user.erl
+++ b/test/user.erl
@@ -44,9 +44,9 @@
     {ok,reference(),Data::#userInfo{},RpcContent::list()}|
     {error,Reason::timeout|no_provider|any()}.
 getUserInfo(Arg0)->
-    getUserInfo(Arg0 ,[]).
+    getUserInfo(Arg0 ,#{}).
 
-getUserInfo(Arg0, Option)->
+getUserInfo(Arg0, RequestOption)->
     
     Data = #dubbo_rpc_invocation{
         className = ?CURRENT_CLASS_NAME,
@@ -69,12 +69,12 @@
     Request = #dubbo_request{
         is_event = false,
         is_twoway = true,
-        mid = de_id_count:gen_id(),
+        mid = dubbo_id_generator:gen_id(),
         data = Data,
         mversion= <<"0.0.0">>,
         serialize_type = ?SERIALIZATION_HESSIAN
     },
-    dubbo_invoker:invoke_request(?CURRENT_CLASS_NAME,Request).
+    dubbo_invoker:invoke_request(?CURRENT_CLASS_NAME,Request,RequestOption).
 
 
 -spec genUserId()->
@@ -82,9 +82,9 @@
     {ok,reference(),Data::list(),RpcContent::list()}|
     {error,Reason::timeout|no_provider|any()}.
 genUserId()->
-    genUserId( []).
+    genUserId( #{}).
 
-genUserId( Option)->
+genUserId( RequestOption)->
     
     Data = #dubbo_rpc_invocation{
         className = ?CURRENT_CLASS_NAME,
@@ -105,12 +105,12 @@
     Request = #dubbo_request{
         is_event = false,
         is_twoway = true,
-        mid = de_id_count:gen_id(),
+        mid = dubbo_id_generator:gen_id(),
         data = Data,
         mversion= <<"0.0.0">>,
         serialize_type = ?SERIALIZATION_HESSIAN
     },
-    dubbo_invoker:invoke_request(?CURRENT_CLASS_NAME,Request).
+    dubbo_invoker:invoke_request(?CURRENT_CLASS_NAME,Request,RequestOption).
 
 
 -spec queryUserInfo(Arg0::#userInfoRequest{})->
@@ -118,9 +118,9 @@
     {ok,reference(),Data::#userInfo{},RpcContent::list()}|
     {error,Reason::timeout|no_provider|any()}.
 queryUserInfo(Arg0)->
-    queryUserInfo(Arg0 ,[]).
+    queryUserInfo(Arg0 ,#{}).
 
-queryUserInfo(Arg0, Option)->
+queryUserInfo(Arg0, RequestOption)->
     
     Data = #dubbo_rpc_invocation{
         className = ?CURRENT_CLASS_NAME,
@@ -143,12 +143,12 @@
     Request = #dubbo_request{
         is_event = false,
         is_twoway = true,
-        mid = de_id_count:gen_id(),
+        mid = dubbo_id_generator:gen_id(),
         data = Data,
         mversion= <<"0.0.0">>,
         serialize_type = ?SERIALIZATION_HESSIAN
     },
-    dubbo_invoker:invoke_request(?CURRENT_CLASS_NAME,Request).
+    dubbo_invoker:invoke_request(?CURRENT_CLASS_NAME,Request,RequestOption).
 
 
 -spec queryUserList(Arg0::list())->
@@ -156,9 +156,9 @@
     {ok,reference(),Data::#userRes{},RpcContent::list()}|
     {error,Reason::timeout|no_provider|any()}.
 queryUserList(Arg0)->
-    queryUserList(Arg0 ,[]).
+    queryUserList(Arg0 ,#{}).
 
-queryUserList(Arg0, Option)->
+queryUserList(Arg0, RequestOption)->
     
     Data = #dubbo_rpc_invocation{
         className = ?CURRENT_CLASS_NAME,
@@ -181,10 +181,10 @@
     Request = #dubbo_request{
         is_event = false,
         is_twoway = true,
-        mid = de_id_count:gen_id(),
+        mid = dubbo_id_generator:gen_id(),
         data = Data,
         mversion= <<"0.0.0">>,
         serialize_type = ?SERIALIZATION_HESSIAN
     },
-    dubbo_invoker:invoke_request(?CURRENT_CLASS_NAME,Request).
+    dubbo_invoker:invoke_request(?CURRENT_CLASS_NAME,Request,RequestOption).