#-- # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. #++ module Qpid::Proton::Event # Manages the association between an Event and the method which should # process on the context object associated with an occurance of the event. # # Each type is identified by a unique #type value. # # @example # # # SCENARIO: A part of an application handles extracting and decrypting # # data received from a remote endpoint. # # # # An EventType is created to notify handlers that such a # # situation has occurred. # # ENCRYPTED_RECV = 10000 # the unique constant value for the event # # # create a new event type which, when it occurs, invokes a method # # named :on_encrypted_data when a handler is notified of its occurrance # Qpid::Proton::Event::ENCRYPTED_RECV = # Qpid::Proton::Event::EventType.new(ENCRYPTED_RECV, :on_encrypted_data) # # @see EventBase EventBase for the rest of this example. # @see Qpid::Proton::Event::Event The Event class for more details on events. # class EventType # The method to invoke on any potential handler. attr_reader :method attr_reader :number def initialize(number, method) @number = number @name = Cproton.pn_event_type_name(@number) @method = method @@types ||= {} @@types[number] = self end # @private def to_s @name end # @private def self.by_type(type) # :nodoc: @@types[type] end end end