日向夏特殊応援部隊

俺様向けメモ

Note of MogileFS #07 Using MogileFS (2)

今回はMogileFS::Clientの使い方です。

new(HASH %args)

下記の値をハッシュで渡します。(use filedsプラグマより)

root
NFS依存の場合のみ必要なので、要らないです。
domain
domainネームスペース(scalar)
backend
MogileFS::Backendオブジェクト(object)
readonly
trueならクライアントはreadonlyになる(bool)
hosts
trackersの指定
timeout
クライアントのタイムアウト指定

使い方としては前回の例を踏襲すれば下記のような形です。

use MogileFS::Client;

my $mogc = MogileFS::Client->new(
  domain => 'www.art-code.org',
  hosts => [qw/10.255.255.30:7001 10.255.255.31:7001/]
);

IO::Handle new_file(SCALAR $key, SCALAR $class, SCALAR $bytes, HASHREF $opts)

新しいファイルハンドルを開きます。

my $fh = $mogc->new_file('foo', 'some_file');
print $fh "hogehoge";
$fh->close;

SCALAR store_file(SCALAR $key, SCALAR $class, SCALAR $file, HASHREF $opts)

指定されたファイルを保存し、バイト数を返します。

$mogc->store_file('some_file', 'foo', '/var/tmp/dummy.txt');

SCALAR store_content(SCALAR $key, SCALAR $class, SCALAR $content, HASHREF $opts)

ファイルの内容を保存し、バイト数を返します。

$mogc->store_content('some_file', 'foo', 'ほげほげ');

ARRAY get_paths(SCALAR $key, HASHREF $opt)

実際に格納されているコンテンツの所在を返します。*1

my @pathes = $mogc->get_paths('piyo');
print @pathes;

実際には

["http://10.255.255.31:7500/dev2/0/000/000/0000000016.fid"]

こんな形でレスポンスが返って来ます。

SCALARREF get_file_data(SCALAR $key, SCALAR $timeout)

ファイルの内容をリファレンスとして返します。

my $content = $mogc->get_file_data('some_file');

print $$content;

SCALAR delete(SCALAR $key)

そのキーで保存されてるファイルを削除します。

$mogc->delete('some_file');

SCALAR rename(SCALAR $from_key, SCALAR $to_key)

キーのリネームを行います。

$mogc->rename('some_key', 'any_key');

ARRAY or ARRAYREF list_keys(SCALAR $prefix, SCALAR $after, SCALAR $limit)

keyの検索を行います。

my $result = $mogc->list_kyes('test_a', undef, 10);
print Dumper $result;

ちょっとafterの意味だけは謎です。。。

# if you expect an array of return values, returns: # ($after, $keys) # but if you expect only a single value, you just get the arrayref of keys. the # value $after is to be used as $after when you call this function again.

ソース内のコメントではこんな風に書いてあります。
ちょっと後で訳しますw

*1:引数ミスってたので修正