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

生物技术

开发平台:

C/C++

  1. --$Revision: 1000.3 $
  2. --********************************************************************
  3. --
  4. --  Network Id server network access
  5. --  Vasilchenko 2003
  6. --
  7. --
  8. --*********************************************************************
  9. --
  10. --  ID2.asn
  11. --
  12. --     messages for id server network access
  13. --
  14. --*********************************************************************
  15. NCBI-ID2Access DEFINITIONS ::=
  16. BEGIN
  17. IMPORTS Seq-id, Seq-loc                                 FROM NCBI-Seqloc
  18.         ID2S-Chunk-Id, ID2S-Seq-annot-Info              FROM NCBI-Seq-split;
  19. ----------------------------------------------------------------------------
  20. -- request types
  21. ----------------------------------------------------------------------------
  22. -- Requests are sent in packets to allow sending several requests at once
  23. -- to avoid network latency, without possiblity of deadlock with server.
  24. -- Server will not start sending replies until it will read the whole packet.
  25. ID2-Request-Packet ::= SEQUENCE OF ID2-Request
  26. ID2-Request ::= SEQUENCE {
  27.         -- request's serial number, can be used in asynchronic clients
  28.         -- server should copy it to corresponding field in reply
  29.         serial-number  INTEGER OPTIONAL,
  30.         params          ID2-Params OPTIONAL,
  31.         request CHOICE {
  32.                 init            NULL,
  33.                 get-packages    ID2-Request-Get-Packages,
  34.                 get-seq-id      ID2-Request-Get-Seq-id,
  35.                 get-blob-id     ID2-Request-Get-Blob-Id,
  36.                 get-blob-info   ID2-Request-Get-Blob-Info,
  37.                 reget-blob      ID2-Request-ReGet-Blob,
  38.                 get-chunks      ID2S-Request-Get-Chunks
  39.         }
  40. }
  41. -- Request for set of params packages know by server.
  42. -- Packages can be used to abbreviate parameters of request.
  43. ID2-Request-Get-Packages ::= SEQUENCE {
  44.         -- return known packages from this list
  45.         -- if unset - return all known packages
  46.         names           SEQUENCE OF VisibleString OPTIONAL,
  47.         -- return packages' names only
  48.         no-contents     NULL OPTIONAL
  49. }
  50. -- Requested sequence ID, can be any string or Seq-id.
  51. -- This request will be replied with one or more ID2-Reply-Get-Seq-id.
  52. ID2-Request-Get-Seq-id ::= SEQUENCE {
  53.         seq-id          ID2-Seq-id,
  54.         seq-id-type     INTEGER {
  55.                 any     (0),    -- return any one Seq-id
  56.                 gi      (1),    -- gi is preferred
  57.                 text    (2),    -- text Seq-id (accession etc) is preferred
  58.                 general (4),    -- general Seq-id is preferred
  59.                 all     (127)   -- return all Seq-ids of the sequence
  60.         } DEFAULT any
  61. }
  62. ID2-Seq-id ::= CHOICE {
  63.         string          VisibleString,
  64.         seq-id          Seq-id
  65. }
  66. -- Return blob-id with specified seq-id.
  67. -- This request with be replied with one or more ID2-Reply-Get-Blob-Id.
  68. ID2-Request-Get-Blob-Id ::= SEQUENCE {
  69.         -- id can be supplied by inner request
  70.         seq-id          ID2-Request-Get-Seq-id,
  71.         -- return id of blob with sequence
  72.         sources         SEQUENCE OF VisibleString OPTIONAL,
  73.         -- return Blob-Ids with external features on this Seq-id
  74.         external        NULL OPTIONAL
  75. }
  76. -- Return some information related to the blob.
  77. -- This request with be replied with one or more of:
  78. --   ID2-Reply-Get-Blob-Seq-ids - if requested by get-seq-ids field
  79. --   ID2-Reply-Get-Blob         - if requested by get-data field
  80. --   ID2S-Reply-Get-Split-Info
  81. --   ID2S-Reply-Get-Chunk
  82. -- Last two can be sent in addition to ID2-Reply-Get-Blob
  83. -- if the blob is split on the server.
  84. -- The replies are made separate to allow server to create replies easier
  85. -- from precalculated data. Each of these replies have ID2-Reply-Data field.
  86. ID2-Request-Get-Blob-Info ::= SEQUENCE {
  87.         -- id can be supplied by inner request
  88.         blob-id         CHOICE {
  89.                 -- id can be supplied by inner request
  90.                 blob-id         ID2-Blob-Id,
  91.                 -- generate blob-ids from request
  92.                 resolve         SEQUENCE {
  93.                         request         ID2-Request-Get-Blob-Id,
  94.                         
  95.                         -- server will not send blobs listed here
  96.                         exclude-blobs   SEQUENCE OF ID2-Blob-Id OPTIONAL
  97.                 }
  98.         },
  99.         -- return in addition list of Seq-ids also resolving to this blob
  100.         get-seq-ids     NULL OPTIONAL,
  101.         -- level of details requested immediately
  102.         -- server will send relevant chunks if blob is splitted
  103.         get-data        ID2-Get-Blob-Details OPTIONAL
  104. }
  105. -- This is similar to FTP reget command.
  106. -- It may be unsupported by server.
  107. -- It's defined only for plain blobs (returned in ID2-Reply-Get-Blob)
  108. -- as all split data comes in small chunks, so reget doesn't make sense.
  109. ID2-Request-ReGet-Blob ::= SEQUENCE {
  110.         blob-id         ID2-Blob-Id,
  111.         -- blob split version to resend
  112.         split-version   INTEGER,
  113.         -- start offset of data to get
  114.         offset          INTEGER
  115. }
  116. -- Request for specific chunks.
  117. -- Server will reply with one or more ID2S-Reply-Get-Chunk.
  118. ID2S-Request-Get-Chunks ::= SEQUENCE {
  119.         blob-id         ID2-Blob-Id,
  120.         -- requests for specific chunks of splitted blob
  121.         chunks          SEQUENCE OF ID2S-Chunk-Id
  122. }
  123. -- The following structure describes what parts of blob are required
  124. -- immediately after ID2-Request-Get-Blob-Info in case blob is split.
  125. -- Seq-entry level will have probably the same values as Entry-complexities.
  126. ID2-Get-Blob-Details ::= SEQUENCE {
  127.         -- reference location for details - can be only part of sequence
  128.         location        Seq-loc OPTIONAL,
  129.         -- Seq-entry level for all data except descriptors (sequnence, annots)
  130.         seq-class-level INTEGER DEFAULT 1,
  131.         -- Seq-entry level for descriptors
  132.         descr-level     INTEGER DEFAULT 1,
  133.         -- mask of descriptor types - see Seqdesc for variants' values
  134.         descr-type-mask INTEGER DEFAULT 0,
  135.         
  136.         -- mask of annotation types - see Seq-annot.data for values
  137.         annot-type-mask INTEGER DEFAULT 0,
  138.         -- mask of feature types - see SeqFeatData for values
  139.         feat-type-mask  INTEGER DEFAULT 0,
  140.         -- level of sequence data to load
  141.         sequence-level  ENUMERATED {
  142.                 none     (0), -- not required
  143.                 seq-map  (1), -- at least seq-map
  144.                 seq-data (2)  -- include seq-data
  145.         } DEFAULT none
  146. }
  147. ----------------------------------------------------------------------------
  148. -- reply types
  149. ----------------------------------------------------------------------------
  150. ID2-Reply ::= SEQUENCE {
  151.         -- request's serial number, copy from request
  152.         serial-number   INTEGER OPTIONAL,
  153.         params          ID2-Params OPTIONAL,
  154.         error           SEQUENCE OF ID2-Error OPTIONAL,
  155.         -- true if this reply is the last one for the request
  156.         -- false if more replies will follow
  157.         end-of-reply    NULL OPTIONAL,
  158.         -- reply data moved at the end to make it easier to construct
  159.         -- the reply data manually from precalculated data
  160.         reply CHOICE {
  161.                 init            NULL,
  162.                 empty           NULL,
  163.                 get-package     ID2-Reply-Get-Package,
  164.                 get-seq-id      ID2-Reply-Get-Seq-id,
  165.                 get-blob-id     ID2-Reply-Get-Blob-Id,
  166.                 get-blob-seq-ids    ID2-Reply-Get-Blob-Seq-ids,
  167.                 get-blob        ID2-Reply-Get-Blob,
  168.                 reget-blob      ID2-Reply-ReGet-Blob,
  169.                 get-split-info  ID2S-Reply-Get-Split-Info,
  170.                 get-chunk       ID2S-Reply-Get-Chunk
  171.         },
  172.         -- additional error flag if the reply is broken in the middle
  173.         -- of transfer.
  174.         -- 'last-octet-string', and 'nothing' mean that
  175.         -- client may use ReGet request to get the remaining data.
  176.         discard         ENUMERATED {
  177.                 reply             (0),  -- whole reply should be discarded
  178.                 last-octet-string (1),  -- all data in embedded ID2-Reply-Data
  179.                                         -- except last OCTET STRING is correct
  180.                 nothing           (2)   -- all data in embedded ID2-Reply-Data
  181.                                         -- is correct, but is incomplete
  182.         } OPTIONAL
  183. }
  184. ID2-Error ::= SEQUENCE {
  185.         severity        ENUMERATED {
  186.                 -- nothing harmful happened
  187.                 warning             (1) ,
  188.                 -- command cannot be completed this time
  189.                 failed-command      (2) ,
  190.                 -- connection cannot be reused, reconnect is required
  191.                 failed-connection   (3) ,
  192.                 -- server cannot be used for a while
  193.                 failed-server       (4) ,
  194.                 -- resolve request gives no data
  195.                 -- probably temporarily (see retry-delay field)
  196.                 no-data             (5) ,
  197.                 -- data exists but client doesn't have permission to get it
  198.                 restricted-data     (6) ,
  199.                 -- this request type is not supported by server
  200.                 unsupported-command (7) ,
  201.                 -- error in request packet, cannot retry
  202.                 invalid-arguments   (8)
  203.         },
  204.         -- client may retry the request after specified time in seconds 
  205.         retry-delay INTEGER OPTIONAL,
  206.         message VisibleString OPTIONAL
  207. }
  208. -- Reply to ID2-Request-Get-Packages.
  209. ID2-Reply-Get-Package ::= SEQUENCE {
  210.         name            VisibleString,
  211.         params          ID2-Params OPTIONAL
  212. }
  213. -- Reply to ID2-Request-Get-Seq-id.
  214. ID2-Reply-Get-Seq-id ::= SEQUENCE {
  215.         -- copy of request
  216.         request         ID2-Request-Get-Seq-id,
  217.         -- resolved Seq-id
  218.         -- not set if error occurred
  219.         seq-id          SEQUENCE OF Seq-id OPTIONAL,
  220.         -- this Seq-id is the last one in the request
  221.         end-of-reply    NULL OPTIONAL
  222. }
  223. -- Reply to ID2-Request-Get-Blob-Id.
  224. ID2-Reply-Get-Blob-Id ::= SEQUENCE {
  225.         -- requested Seq-id
  226.         seq-id          Seq-id,
  227.         -- result
  228.         blob-id         ID2-Blob-Id,
  229.         -- version of split data
  230.         -- (0 for non split)
  231.         split-version   INTEGER DEFAULT 0,
  232.         -- annotation types in this blob
  233.         -- annotation are unknown if this field is omitted
  234.         annot-info      SEQUENCE OF ID2S-Seq-annot-Info OPTIONAL,
  235.         -- this Blob-id is the last one in the request
  236.         end-of-reply    NULL OPTIONAL
  237. }
  238. -- Reply to ID2-Request-Get-Blob-Info.
  239. ID2-Reply-Get-Blob-Seq-ids ::= SEQUENCE {
  240.         blob-id         ID2-Blob-Id,
  241.         -- list of Seq-id resolving to this Blob-Id
  242.         -- in compressed format
  243.         ids             ID2-Reply-Data OPTIONAL
  244. }
  245. -- Reply to ID2-Request-Get-Blob-Info.
  246. ID2-Reply-Get-Blob ::= SEQUENCE {
  247.         blob-id         ID2-Blob-Id,
  248.         -- version of split data
  249.         -- (0 for non split)
  250.         split-version   INTEGER DEFAULT 0,
  251.         -- whole blob or blob skeleton
  252.         -- not set if error occurred
  253.         data            ID2-Reply-Data OPTIONAL
  254. }
  255. -- Reply to ID2-Request-Get-Blob-Info.
  256. ID2S-Reply-Get-Split-Info ::= SEQUENCE {
  257.         blob-id         ID2-Blob-Id,
  258.         -- version of split data
  259.         split-version   INTEGER,
  260.         -- blob split info
  261.         -- not set if error occurred
  262.         data            ID2-Reply-Data OPTIONAL
  263. }
  264. -- Reply to ID2-Request-ReGet-Blob.
  265. ID2-Reply-ReGet-Blob ::= SEQUENCE {
  266.         blob-id         ID2-Blob-Id,
  267.         -- version of data split
  268.         split-version   INTEGER,
  269.         -- offset of data
  270.         offset          INTEGER,
  271.         -- blob split info
  272.         -- not set if error occurred
  273.         data            ID2-Reply-Data OPTIONAL
  274. }
  275. -- Reply to ID2S-Request-Get-Chunks.
  276. ID2S-Reply-Get-Chunk ::= SEQUENCE {
  277.         blob-id         ID2-Blob-Id,
  278.         -- id of chunk to send
  279.         chunk-id        ID2S-Chunk-Id,
  280.         -- chunk data
  281.         -- not set if error occurred
  282.         data            ID2-Reply-Data OPTIONAL
  283. }
  284. -- Data packing.
  285. ID2-Reply-Data ::= SEQUENCE {
  286.         -- index of negotiated types
  287.         -- recommended types
  288.         --   Seq-entry,
  289.         --   ID2S-Split-Info,
  290.         --   ID2S-Chunk
  291.         data-type       INTEGER {
  292.                 seq-entry       (0),
  293.                 seq-annot       (1),
  294.                 id2s-split-info (2),
  295.                 id2s-chunk      (3)
  296.         } DEFAULT seq-entry,
  297.         -- serialization format (ASN.1 binary, ASN.1 text)
  298.         -- index of negotiated formats
  299.         data-format     INTEGER {
  300.                 asn-binary      (0),
  301.                 asn-text        (1),
  302.                 xml             (2)
  303.         } DEFAULT asn-binary,
  304.         -- post serialization compression (plain, gzip, etc.)
  305.         -- index of negotiated compressions
  306.         data-compression INTEGER {
  307.                 none            (0),
  308.                 gzip            (1),
  309.                 nlmzip          (2),
  310.                 bzip2           (3)
  311.         } DEFAULT none,
  312.         -- data blob
  313.         data            SEQUENCE OF OCTET STRING
  314. }
  315. -- Data packed within ID2-Reply-Get-Blob-Seq-ids reply.
  316. ID2-Blob-Seq-ids ::= SEQUENCE OF ID2-Blob-Seq-id
  317. ID2-Blob-Seq-id ::= SEQUENCE {
  318.         seq-id          Seq-id,
  319.         
  320.         -- this Seq-id is replaced by sequence in another blob
  321.         replaced        NULL OPTIONAL
  322. }
  323. ----------------------------------------------------------------------------
  324. -- utility types
  325. ----------------------------------------------------------------------------
  326. ID2-Blob-Id ::= SEQUENCE {
  327.         sat             INTEGER,
  328.         sub-sat         INTEGER {
  329.                 main    (0),
  330.                 snp     (1),
  331.                 mgc     (16)
  332.         } DEFAULT main,
  333.         sat-key         INTEGER,
  334.         -- version of blob, optional in some requests
  335.         version         INTEGER OPTIONAL
  336. }
  337. ID2-Params ::= SEQUENCE OF ID2-Param
  338. ID2-Param ::= SEQUENCE {
  339.         name    VisibleString,
  340.         value   SEQUENCE OF VisibleString OPTIONAL,
  341.         type    ENUMERATED {
  342.                 -- no response expected
  343.                 set-value   (1),
  344.                 -- this option is for client only
  345.                 -- server replies with its value of param if known
  346.                 -- server omits this param in reply if unknown to server
  347.                 get-value   (2),
  348.                 -- no direct response expected,
  349.                 -- but if the param or its value is not supported
  350.                 -- an error is reported and the request is not be completed
  351.                 force-value (3),
  352.                 -- use named package
  353.                 -- value should be unset
  354.                 use-package (4)
  355.         } DEFAULT set-value
  356. }
  357. END