Module: Suzuna::Template

Defined in:
lib/suzuna.rb

Overview

I/O 要求処理の基本機能のみを実装したモジュールです。

クラスやモジュールに include することを想定しています。

必要なインスタンスメソッドは include したクラスで再定義して下さい。

Instance Method Summary collapse

Instance Method Details

#cleanupObject

このメソッドは geom gate オブジェクトが破棄されたあとに呼ばれます。

仮想デバイスの終了処理などを目的として用意されています。

戻り値は無視されます。



117
118
119
# File 'lib/suzuna.rb', line 117

def cleanup
  nil
end

#delete(offset, size) ⇒ Object

このメソッドは geom gate オブジェクトに対してセクタの削除(解放)要求があった時に呼ばれます。

戻り値として、処理の成否である Errno::EXXX クラスかそのインスタンス、errno の整数値を返して下さい。 正常な場合には、nil を返すことで Errno::NOERROR と認識されます。

Raises:

  • (NotImplementedError)


151
152
153
# File 'lib/suzuna.rb', line 151

def delete(offset, size)
  raise NotImplementedError, "IMPLEMENT ME!  #delete(offset, size) -> errno"
end

#flagsObject

このメソッドはデバイスの読み書き特性を取得するために呼ばれます。

/dev 以下に geom gate オブジェクトとして作成される前に呼ばれます。

戻り値として G_GATE_FLAG_READWRITE、G_GATE_FLAG_READONLY、G_GATE_FLAG_WRITEONLY のいずれかを返して下さい。



62
63
64
# File 'lib/suzuna.rb', line 62

def flags
  G_GATE_FLAG_READONLY
end

#infoObject

このメソッドはデバイスのテキスト情報を取得するために呼ばれます。

/dev 以下に geom gate オブジェクトとして作成される前に呼ばれます。

戻り値として nil か 2048 バイト未満の文字列を返して下さい。



84
85
86
# File 'lib/suzuna.rb', line 84

def info
  "#{Suzuna}-#{VERSION} (powered by #{RUBY_ENGINE})"
end

#mediasizeObject

このメソッドはデバイスの大きさを取得するために呼ばれます。

/dev 以下に geom gate オブジェクトとして作成される前に呼ばれます。

戻り値として 0以上で sectorsize の整数倍となる整数を返して下さい。

Raises:

  • (NotImplementedError)


51
52
53
# File 'lib/suzuna.rb', line 51

def mediasize
  raise NotImplementedError, "IMPLEMENT ME!  #mediasize -> integer"
end

#read(offset, size, buf) ⇒ Object

このメソッドは geom gate オブジェクトに対して読み込み要求があった時に呼ばれます。

文字列オブジェクトである buf に読み込んだデータを転写して下さい。

戻り値として、処理の成否である Errno::EXXX クラスかそのインスタンス、errno の整数値を返して下さい。 正常な場合には、nil を返すことで Errno::NOERROR と認識されます。

Raises:

  • (NotImplementedError)


129
130
131
# File 'lib/suzuna.rb', line 129

def read(offset, size, buf)
  raise NotImplementedError, "IMPLEMENT ME!  #read(offset, size, buf) -> errno"
end

#sectorsizeObject

このメソッドはデバイスのセクタサイズ (読み書きの最小単位) を取得するために呼ばれます。

/dev 以下に geom gate オブジェクトとして作成される前に呼ばれます。

戻り値として正の整数値を返して下さい。



73
74
75
# File 'lib/suzuna.rb', line 73

def sectorsize
  512
end

#timeoutObject

このメソッドはデバイスの要求処理の最大待機時間を取得するために呼ばれます。

/dev 以下に geom gate オブジェクトとして作成される前に呼ばれます。

戻り値として正の整数値を返して下さい。0 は無制限とみなされます。



95
96
97
# File 'lib/suzuna.rb', line 95

def timeout
  60
end

#unitObject

このメソッドはデバイスのユニット番号を取得するために呼ばれます。

/dev 以下に geom gate オブジェクトとして作成される前に呼ばれます。

戻り値として正の整数値か、G_GATE_UNIT_AUTO を返して下さい。



106
107
108
# File 'lib/suzuna.rb', line 106

def unit
  G_GATE_UNIT_AUTO
end

#write(offset, buf) ⇒ Object

このメソッドは geom gate オブジェクトに対して書き込み要求があった時に呼ばれます。

文字列オブジェクトである buf を書き込む処理を行って下さい。

戻り値として、処理の成否である Errno::EXXX クラスかそのインスタンス、errno の整数値を返して下さい。 正常な場合には、nil を返すことで Errno::NOERROR と認識されます。

Raises:

  • (NotImplementedError)


141
142
143
# File 'lib/suzuna.rb', line 141

def write(offset, buf)
  raise NotImplementedError, "IMPLEMENT ME!  #write(offset, buf) -> errno"
end