class Memcached
=begin rdoc
Superclass for all Memcached runtime exceptions.
Subclasses correspond one-to-one with server response strings or libmemcached errors. For example, raising Memcached::NotFound means that the server returned "NOT_FOUND\r\n".
== Subclasses
* Memcached::ABadKeyWasProvidedOrCharactersOutOfRange
* Memcached::AKeyLengthOfZeroWasProvided
* Memcached::ATimeoutOccurred
* Memcached::ActionNotSupported
* Memcached::ActionQueued
* Memcached::ClientError
* Memcached::ConnectionBindFailure
* Memcached::ConnectionDataDoesNotExist
* Memcached::ConnectionDataExists
* Memcached::ConnectionFailure
* Memcached::ConnectionSocketCreateFailure
* Memcached::CouldNotOpenUnixSocket
* Memcached::EncounteredAnUnknownStatKey
* Memcached::Failure
* Memcached::FetchWasNotCompleted
* Memcached::HostnameLookupFailure
* Memcached::ItemValue
* Memcached::MemoryAllocationFailure
* Memcached::NoServersDefined
* Memcached::NotFound
* Memcached::NotStored
* Memcached::PartialRead
* Memcached::ProtocolError
* Memcached::ReadFailure
* Memcached::ServerDelete
* Memcached::ServerEnd
* Memcached::ServerError
* Memcached::ServerIsMarkedDead
* Memcached::ServerValue
* Memcached::SomeErrorsWereReported
* Memcached::StatValue
* Memcached::SystemError
* Memcached::TheHostTransportProtocolDoesNotMatchThatOfTheClient
* Memcached::UnknownReadFailure
* Memcached::WriteFailure
=end
class Error < RuntimeError
attr_accessor :no_backtrace
def set_backtrace(*args)
@no_backtrace ? [] : super
end
def backtrace(*args)
@no_backtrace ? [] : super
end
end
#:stopdoc:
class << self
private
def camelize(string)
string.downcase.gsub('/', ' or ').split(' ').map {|s| s.capitalize}.join
end
end
ERRNO_HASH = Hash[*Errno.constants.map{ |c| [Errno.const_get(c)::Errno, Errno.const_get(c).new.message] }.flatten]
EXCEPTIONS = []
EMPTY_STRUCT = Rlibmemcached::MemcachedSt.new
Rlibmemcached.memcached_create(EMPTY_STRUCT)
# Generate exception classes
Rlibmemcached::MEMCACHED_MAXIMUM_RETURN.times do |index|
description = Rlibmemcached.memcached_strerror(EMPTY_STRUCT, index).gsub("!", "")
exception_class = eval("class #{camelize(description)} < Error; self; end")
EXCEPTIONS << exception_class
end
#:startdoc:
end