Anonymous avatar Anonymous committed bfc683f

Sequenced operations do not return ReqId

Comments (0)

Files changed (1)

 %% sequences of operations
 %%------------------------------------------------------------------------------
 
+sequence(_PoolId, []) ->
+    ok;
 sequence(PoolId, Sequence) ->
-    Len = length(Sequence),
-    {Pid, Database, ReqId} = get_pid_pool(PoolId, Len),
-    lists:foldl(fun(Operation, NewReqId) ->
-                        Operation(Pid, Database, NewReqId)
-                end, ReqId, Sequence).
+    {Pid, Database, ReqId} = get_pid_pool(PoolId, length(Sequence)),
+    sequence(Sequence, Pid, Database, ReqId).
+
+
+sequence([Operation|Tail], Pid, Database, ReqId) ->
+    Result = Operation(Pid, Database, ReqId),
+    case Tail of
+        [] -> Result;
+        _ -> sequence(Tail, Pid, Database, ReqId + 1)
+    end.
 
 
 synchronous() ->
     synchronous(?TIMEOUT).
 
 synchronous(Timeout) ->
-    [fun(_, _, ReqId) -> ReqId end,
+    [fun(_, _, _) -> ok end,
      fun(Pid, Database, ReqId) ->
              PacketGetLastError = emongo_packet:get_last_error(Database, ReqId),
              emongo_server:send_recv(Pid, ReqId, PacketGetLastError, Timeout)
 fold_all_seq(F, Value, Collection, Selector, Options) ->
     Timeout = proplists:get_value(timeout, Options, ?TIMEOUT),
     Query = create_query(Options, Selector),
-    [fun(_, _, ReqId) -> ReqId end,
+    [fun(_, _, _) -> ok end,
      fun(Pid, Database, ReqId) ->
              Packet = emongo_packet:do_query(Database, Collection, ReqId, Query),
              
 insert_seq(Collection, [[_|_]|_]=Documents, Next) ->
     [fun(Pid, Database, ReqId) ->
              Packet = emongo_packet:insert(Database, Collection, ReqId, Documents),
-             emongo_server:send(Pid, Packet),
-             ReqId + 1
+             emongo_server:send(Pid, Packet)
      end | Next];
 insert_seq(Collection, Document, Next) ->
     insert_seq(Collection, [Document], Next).
 update_seq(Collection, Selector, Document, Upsert, Next) ->
     [fun(Pid, Database, ReqId) ->
              Packet = emongo_packet:update(Database, Collection, ReqId, Upsert, Selector, Document),
-             emongo_server:send(Pid, Packet),
-             ReqId + 1
+             emongo_server:send(Pid, Packet)
      end | Next].
 
 
 delete_seq(Collection, Selector, Next) ->
     [fun(Pid, Database, ReqId) ->
              Packet = emongo_packet:delete(Database, Collection, ReqId, transform_selector(Selector)),
-             emongo_server:send(Pid, Packet),
-             ReqId + 1
+             emongo_server:send(Pid, Packet)
      end | Next].
 
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.