lib/rio/scheme/sysio.rb in rio-0.4.2 vs lib/rio/scheme/sysio.rb in rio-0.5.1
- old
+ new
@@ -1,8 +1,8 @@
#--
-# ===============================================================================
-# Copyright (c) 2005,2006,2007,2008 Christopher Kleckner
+# ===========================================================================
+# Copyright (c) 2005-2012 Christopher Kleckner
# All rights reserved
#
# This file is part of the Rio library for ruby.
#
# Rio is free software; you can redistribute it and/or modify
@@ -16,48 +16,36 @@
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Rio; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-# ===============================================================================
+# ===========================================================================
#++
#
-# To create the documentation for Rio run the command
-# ruby build_doc.rb
-# from the distribution directory.
-#
-# Suggested Reading
-# * RIO::Doc::SYNOPSIS
-# * RIO::Doc::INTRO
-# * RIO::Doc::HOWTO
-# * RIO::Doc::EXAMPLES
-# * RIO::Rio
-#
module RIO
module SysIO #:nodoc: all
- require 'rio/rl/ioi'
- RESET_STATE = RL::IOIBase::RESET_STATE
+ require 'rio/rrl/ioi'
+ RESET_STATE = RRL::IOIBase::RESET_STATE
- class RL < RL::SysIOBase
+ class RRL < RRL::SysIOBase
RIOSCHEME = 'sysio'
- RIOPATH = RIO::RL::CHMAP.invert[RIOSCHEME].to_s.freeze
- def opaque() sprintf('0x%08x',self.ios.object_id) end
- def open(*args)
- super(*args)
+ RIOPATH = RIO::RRL::CHMAP.invert[RIOSCHEME].to_s.freeze
+ def initialize(u,arg=nil)
+ super(::Alt::URI.parse(u),arg)
+ self.query ||= ios unless ios.nil?
end
- # must be able to process both
- # parse('rio:sysio',ios)
- # parse('rio:sysio:0xHEXIOS')
- SPLIT_RE = %r|0x([0-9a-fA-F]+)$|
- def self.splitrl(s)
- sub,opq,whole = split_riorl(s)
- if bm = SPLIT_RE.match(opq)
- oid = bm[1].hex
- ios = ObjectSpace._id2ref(oid)
- [ios]
- end
+ def query=(arg)
+ uri.query = arg.nil? ? nil : sprintf('0x%08x',arg.object_id)
+ arg
+ end
+ def query
+ uri.query.nil? ? nil : ObjectSpace._id2ref(uri.query.hex)
+ end
+
+ def open(*args)
+ super(self.ios)
end
end
end
end