anchor.diff:  %% Function: start_link() -> {ok,Pid} | ignore | {error,Error}
   %% Description: Starts the server
   %%--------------------------------------------------------------------
  +-spec start_link() -> ignore | {ok, pid()} | {error, any()}.
   start_link() ->
       gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
   
  
positive.code: %%        IOL ::= {integer(), integer(), integer()} - {Index, Offs, Len}
  %% Description: Mark a given chunk as fetched.
  %%--------------------------------------------------------------------
  mark_fetched(Id, {Index, Offset, Len}) ->
      gen_server:call(?SERVER, {mark_fetched, Id, Index, Offset, Len}).
  
  %% Store the chunk in the chunk table. As a side-effect, check the piece if it
  %% is fully fetched.
  store_chunk(Id, {Index, D, Ops}, {Offset, Len}, FSPid) ->
      gen_server:call(?SERVER, {store_chunk, Id, {Index, D, Ops}, {Offset, Len}, FSPid},
                     timer:seconds(?STORE_CHUNK_TIMEOUT)).
  
negative.code: %% Function: putback_chunks(Pid) -> transaction
  %% Description: Find all chunks assigned to Pid and mark them as not_fetched
  %%--------------------------------------------------------------------
  -spec putback_chunks(pid()) -> ok.
  putback_chunks(Pid) ->
      gen_server:cast(?SERVER, {putback_chunks, Pid}).
  
  -spec putback_chunk(pid(), {integer(), integer(), integer()}) -> ok.
  putback_chunk(Pid, {Idx, Offset, Len}) ->
      gen_server:cast(?SERVER, {putback_chunk, Pid, {Idx, Offset, Len}}).
  
  