id2.txt
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:6k
源码类别:

生物技术

开发平台:

C/C++

  1.                                   Authors:  Denis Vakatov, Eugene Vasilchenko
  2.   ID2 Protocol:
  3.  Request
  4.  Reply
  5.  Transmission of Split data
  6.  TSE Sources
  7.  Authentication
  8.  PARAM packages
  9.  List of Params
  10. -----------------------------------------------------------------------------
  11. ---------------------- Request
  12. Requests (unlike replies) must be assembled into packages (ID2-Request-Packet).
  13. This is to allow for a convenience of sending several requests at once --
  14. without having to up-read the replies to previously sent requests from the
  15. same package (otherwise, if one does not do such an up-read there can be
  16. a deadlock in the client-server communication).
  17. ---------------------- Reply
  18. Every request may result in several replies. In this case
  19. all but last reply will have end-of-reply member FALSE and
  20. the last one will have end-of-reply member TRUE.
  21. Replies can be reordered by server and even mixed with replies
  22. on another request if client and server will negotiate 'reorder'
  23. capability.
  24. Some requests have nested request which will be executed by server
  25. with arguments from parent reply if it was successful.
  26. All these nested replies will have the same serial-number and only
  27. the last reply among parent replies and nested replies will be marked
  28. as end-of-reply.
  29. If connection doesn't support streaming like HTTP all replies on request
  30. have to be sent in one piece. In this case they will be streamed inside
  31. of this data piece.
  32. ---------------------- Split
  33. When TSE is splitted initial reply will contain at least two blobs:
  34. so called 'skeleton' and 'split-info'.
  35. Skeleton of TSE is original TSE with cut out some or all Seq-descr,
  36. Seq-annot, Seq-data and assembly objects.
  37. This cut out data is distributed evenly among blobs called 'chunks'.
  38. Split-info blob contains information about distribution of data among
  39. chunks. This allows client to determine on its side what chunks are
  40. needed to perform a work.
  41. Sometimes splitted TSE may be repackaged under the same Tse-id.
  42. In this case skeleton blob will be left untouched, only chunks and split-info
  43. blobs will be changed.
  44. New splitted data set will have new unique chunk id set and chunks from old
  45. splitted version will remain on server for reasonable time.
  46. Thus, the clients which already loaded old split-info will still be using old
  47. compatible chunks, while new clients will get new split-info and
  48. correspondingly will use new chunks.
  49. When resolving gi to Tse-id, server also sets field split-version which
  50. will allow caching clients to know when to reload new version of splitted TSE.
  51. It's convenient to use last chunk id in chunk set as split-version but
  52. this is not required by protocol.
  53. ---------------------- TSE Sources
  54. There are possibly several current TSE containing information about
  55. the same gi.
  56. As an example of current GenBank state we have a 'native' TSE with
  57. sequence and maybe a TSE with SNP data.
  58. So all TSE are considered to have 'source name' - string.
  59. It is assumed that sequence itself (if any) is located in source
  60. with empty name.
  61. ---------------------- Authentication
  62. Client authentication can be implemented using optional 'params' field.
  63. ---------------------- PARAM packages
  64. 1) At least in the case of stateless connection (such as HTTP) the
  65.    PARAMs must be sent with each request. Therefore, and also
  66.    to help avoid accidental errors (typos, omissions, extras)
  67.    in the PARAMs and maybe even save some time on parsing them on
  68.    the server side, there will be so-called PACKAGEs of PARAMs,
  69.    which client is encouraged to use.
  70. 2) The PACKAGE is just a pre-defined list of PARAMs.
  71. 3) It's represented as a PARAM of type `package' with some unique
  72.    (and preferably meaningful enough) name.
  73. 4) PACKAGEs are stored on the server side.
  74. 4.1) The list of (names of) available PACKAGEs can be retrieved from
  75.      the server using request `get-params' with the `params' request field 
  76.      un-set.
  77. 4.2) The contents, i.e. the PARAMs (name/value/type) constituting
  78.      the PACKAGE(s) can be obtained by using request `get-params' with
  79.      the `params' request field containing the list of names (with
  80.      type `package' of course, and no value) of the PACKAGE(s) which
  81.      content you want to retrieve.
  82. 4.3) Or, you can get all available PACKAGEs along with their contents
  83.      without specifying their names using request `get-params' with
  84.      the `params' field set but empty.
  85. 5) A PACKAGE sent to the server is processed exactly in a way
  86.    as if it was just a list of the PARAMs wich constitute it
  87.    (except for case [6] below).
  88. 6) If server does not recognize name of the PACKAGE set to it by the
  89.    client, an error will be reported, and the request will not be
  90.    acted upon.
  91. 7) One can send (for the same request) more than one PACKAGE and/or
  92.    PARAMs. PACKAGE(s) here will again be treated just as if they were
  93.    expanded to the list of PARAMs which constitute them.
  94. 8) The order matters -- in case of the PARAMs with the same name,
  95.    the PARAM most down the PARAMs list will be used by server.
  96.    All other PARAMs will be ignored, and warnings reporting the
  97.    conflict may be posted in the reply.
  98. 8.1) If two PARAMs have the same name but different types, then
  99.      error will be reported, and the request will not be acted upon.
  100. ---------------------- List of Params
  101. List of client params:
  102. 1. "ID2-version" = "9" "100" etc
  103. 2. "Compression" = "gzip,none" first one is preferred
  104. 3. "TSE-Split" = "allow"
  105. 4. "Data-types" = "Seq-entry,Seq-annot"
  106. Server params:
  107. 1. "ID2-version" = "9" "100" etc
  108. 2. "Compression" = "gzip,none" first one is preferred
  109. 3. "TSE-Split" = "allow"
  110. 4. "Data-sources" = "SNP"
  111. 5.
  112. -----------------------------------------------------------------------------
  113. $Id: id2.txt,v 1000.0 2004/04/12 17:28:19 gouriano Exp $