class Labcom::DBstorer

Authors

S.imazu

Version

20.0.0

Date

2018-06-01

[クラス名] DBstorer

[メンバー]

[クラスメソッド]

[インスタンスメソッド]

[説 明]

  1. 汎用データを保存する制御クラス

[UPDATE履歴]

18.0.0 初版 19.0.0 変更

Public Class Methods

new( ) click to toggle source
引数

なし

[説  明]
コンストラクタ
# File labcom/DBstorer.rb, line 73
def initialize( ) 
  ObjectSpace.define_finalizer( self, DBstorer.del_callback() )
  
end
version() click to toggle source
引数

なし

返値

バージョン番号(String)

[説  明]
共有ライブラリのバージョン番号(String)を戻す
# File labcom/DBstorer.rb, line 44
def self.version()
  return DBstore.version()
end

Public Instance Methods

puts( shot, sub_shot, diag, mail_address, data_type, arc_data_array) click to toggle source
shot (int)

ショット番号

sub_shot (int)

サブショット番号

diag (string)

データ名(計測名)

mail_address (string)

メールアドレス

data_type (string)

データ種別 'RAW','ANA'

arc_data_array (Array(ArcData))

チャネルデータ配列

返値

なし

例外

DBstore::DBstoreError, RuntimeError

[説  明]
汎用データを保存する。
# File labcom/DBstorer.rb, line 95
  def puts( shot, sub_shot, diag, mail_address, data_type, arc_data_array)
    
      dd = 0
      return if arc_data_array == nil         # データがない。 
      if( arc_data_array.is_a?(Array) ) then
         return if 0 == arc_data_array.length # データがない。
         data_array = arc_data_array
      elsif( arc_data_array.is_a?(ArcData) ) then
            data_array = [arc_data_array]
      else 
        raise RuntimeError, 'Illegal type of arc_data'
      end
      data_array.each {|data|
          if( !data.is_a?(ArcData) ) then
              raise RuntimeError, 'Illegal type of arc_data_array'
          end
        } 

      begin     # begin_1
        dd = DBstore.open(mail_address, diag, shot, sub_shot, data_type.upcase())
            
        ch_no = 0
        for arc_data in data_array do
          ch_no = ch_no + 1
          if arc_data.is_frame() then
            DBstore.open_frame(dd, ch_no, arc_data.samples.x_size,                                   arc_data.samples.y_size, arc_data.samples.image_type)
            fr = 0
            for fr_data in arc_data.samples.frames do
              fr = fr+1
              DBstore.write_frame(dd, ch_no, fr, fr_data.block_bin_str)
            end # end of for-fr            
            DBstore.close_frame(dd, ch_no, arc_data.parameters)
             
          else # samples
            DBstore.write(dd, ch_no, arc_data.parameters, 
                            arc_data.samples.block_bin_str, arc_data.samples.image_type)
            
          end # end of if 
           
        end # end of for-arc_data
        
        DBstore.close(dd)
        dd = 0
            
#      rescue DBstore::DBstoreError => ex
      rescue => ex
        if( dd !=  0 )then
          DBstore.abort(dd)
        end
        raise ex
      end # end of begin_1

    return
      
  end