Sha256: cc60b464f5ede8f9efc10ec0580b29ef91f0cf2d05e002d68995c0a7f802bc09

Contents?: true

Size: 1.91 KB

Versions: 23

Compression:

Stored size: 1.91 KB

Contents

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
  <title>register (Mongrel::URIClassifier)</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
  <pre>/**
 * call-seq:
 *    uc.register(&quot;/someuri&quot;, SampleHandler.new) -&gt; nil
 *
 * Registers the SampleHandler (one for all requests) with the &quot;/someuri&quot;.
 * When URIClassifier::resolve is called with &quot;/someuri&quot; it'll return
 * SampleHandler immediately.  When called with &quot;/someuri/iwant&quot; it'll also
 * return SomeHandler immediatly, with no additional searches, but it will
 * return path info with &quot;/iwant&quot;.
 *
 * You actually can reuse this class to register nearly anything and 
 * quickly resolve it.  This could be used for caching, fast mapping, etc.
 * The downside is it uses much more memory than a Hash, but it can be
 * a lot faster.  It's main advantage is that it works on prefixes, which
 * is damn hard to get right with a Hash.
 */
VALUE URIClassifier_register(VALUE self, VALUE uri, VALUE handler)
{
  int rc = 0;
  void *ptr = NULL;
  struct tst *tst = NULL;
  DATA_GET(self, struct tst, tst);

  rc = tst_insert((unsigned char *)StringValueCStr(uri), (void *)handler , tst, 0, &amp;ptr);

  if(rc == TST_DUPLICATE_KEY) {
    rb_raise(rb_eStandardError, &quot;Handler already registered with that name&quot;);
  } else if(rc == TST_ERROR) {
    rb_raise(rb_eStandardError, &quot;Memory error registering handler&quot;);
  } else if(rc == TST_NULL_KEY) {
    rb_raise(rb_eStandardError, &quot;URI was empty&quot;);
  }
  
  rb_hash_aset(rb_ivar_get(self, id_handler_map), uri, handler);

  return Qnil;
}</pre>
</body>
</html>

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
mongrel-0.2.2 doc/rdoc/classes/Mongrel/URIClassifier.src/M000020.html
mongrel-0.3.1 doc/rdoc/classes/Mongrel/URIClassifier.src/M000036.html
mongrel-0.3.10.1 doc/rdoc/classes/Mongrel/URIClassifier.src/M000054.html
mongrel-0.3.12.2 doc/rdoc/classes/Mongrel/URIClassifier.src/M000087.html
mongrel-0.3.12.1 doc/rdoc/classes/Mongrel/URIClassifier.src/M000087.html
mongrel-0.3.10 doc/rdoc/classes/Mongrel/URIClassifier.src/M000054.html
mongrel-0.3.12.3 doc/rdoc/classes/Mongrel/URIClassifier.src/M000087.html
mongrel-0.3.13.2 doc/rdoc/classes/Mongrel/URIClassifier.src/M000096.html
mongrel-0.3.12.4 doc/rdoc/classes/Mongrel/URIClassifier.src/M000087.html
mongrel-0.3.13.1 doc/rdoc/classes/Mongrel/URIClassifier.src/M000093.html
mongrel-0.3.12 doc/rdoc/classes/Mongrel/URIClassifier.src/M000087.html
mongrel-0.3.13 doc/rdoc/classes/Mongrel/URIClassifier.src/M000091.html
mongrel-0.3.13.3 doc/rdoc/classes/Mongrel/URIClassifier.src/M000096.html
mongrel-0.3.6 doc/rdoc/classes/Mongrel/URIClassifier.src/M000031.html
mongrel-0.3.2 doc/rdoc/classes/Mongrel/URIClassifier.src/M000036.html
mongrel-0.3.7.1 doc/rdoc/classes/Mongrel/URIClassifier.src/M000026.html
mongrel-0.3.5 doc/rdoc/classes/Mongrel/URIClassifier.src/M000036.html
mongrel-0.3.7 doc/rdoc/classes/Mongrel/URIClassifier.src/M000026.html
mongrel-0.3.3 doc/rdoc/classes/Mongrel/URIClassifier.src/M000036.html
mongrel-0.3.4 doc/rdoc/classes/Mongrel/URIClassifier.src/M000036.html