C初心者がmemcached-1.4.5を追いかける。(27)
C初心者がmemcached-1.4.5を追いかける。(26)の続き
ソースはコチラにてDLしました。
getoptで受け取ったパラメータによって処理を行っている部分を追いかける。
memcached.c(4422行目あたり)
case 'B': protocol_specified = true; if (strcmp(optarg, "auto") == 0) { settings.binding_protocol = negotiating_prot; } else if (strcmp(optarg, "binary") == 0) { settings.binding_protocol = binary_prot; } else if (strcmp(optarg, "ascii") == 0) { settings.binding_protocol = ascii_prot; } else { fprintf(stderr, "Invalid value for binding protocol: %s\n" " -- should be one of auto, binary, or ascii\n", optarg); exit(EX_USAGE); } break;
"B:" /* Binding protocol */
protocol_specifiedをtrueに設定。
- B に続く引数が
autoの場合、settings.binding_protocol に negotiating_protを設定
binaryの場合、settings.binding_protocol に binary_protを設定
asciiの場合、settings.binding_protocol に ascii_protを設定
それ以外はエラー exitの引数のEX_USAGEは『誤った個数の引数が渡されたときなど、コマンドが間違って使われたことを表す 終了コード』のよう。14.1.5 プロセス管理に書いてました。
デフォルトはnegotiating_prot? memcached.c(196行目あたり)
settings.binding_protocol = negotiating_prot;
protocol_specifiedはmemcached.c(4479行目あたり)で利用されてます。
if (settings.sasl) { if (!protocol_specified) { settings.binding_protocol = binary_prot; } else { if (settings.binding_protocol != binary_prot) { fprintf(stderr, "ERROR: You cannot allow the ASCII protocol while using SASL.\n"); exit(EX_USAGE); } } }
ここはsettings.saslを利用する場合は、binary_protしか利用できないようにしてるみたいですね。