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