         # File lib/em/protocols/postgres3.rb, line 180
    180:       def dispatch_conn_message msg
    181:         case msg
    182:         when AuthentificationClearTextPassword
    183:           raise ArgumentError, "no password specified" if @password.nil?
    184:           send_data PasswordMessage.new(@password).dump
    185:
    186:         when AuthentificationCryptPassword
    187:           raise ArgumentError, "no password specified" if @password.nil?
    188:           send_data PasswordMessage.new(@password.crypt(msg.salt)).dump
    189:
    190:         when AuthentificationMD5Password
    191:           raise ArgumentError, "no password specified" if @password.nil?
    192:           require 'digest/md5'
    193:
    194:           m = Digest::MD5.hexdigest(@password + @user)
    195:           m = Digest::MD5.hexdigest(m + msg.salt)
    196:           m = 'md5' + m
    197:           send_data PasswordMessage.new(m).dump
    198:
    199:         when AuthentificationKerberosV4, AuthentificationKerberosV5, AuthentificationSCMCredential
    200:           raise "unsupported authentification"
    201:
    202:         when AuthentificationOk
    203:         when ErrorResponse
    204:           raise msg.field_values.join("\t")
    205:         when NoticeResponse
    206:           @notice_processor.call(msg) if @notice_processor
    207:         when ParameterStatus
    208:           @params[msg.key] = msg.value
    209:         when BackendKeyData
    210:           # TODO
    211:           #p msg
    212:         when ReadyForQuery
    213:           # TODO: use transaction status
    214:           pc,@pending_conn = @pending_conn,nil
    215:           pc.succeed true
    216:         else
    217:           raise "unhandled message type"
    218:         end
    219:       end