⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simpleoutbindlistener.java

📁 smpp 源代码
💻 JAVA
字号:
/*
 * Copyright (c) 1996-2001
 * Logica Mobile Networks Limited
 * All rights reserved.
 *
 * This software is distributed under Logica Open Source License Version 1.0
 * ("Licence Agreement"). You shall use it and distribute only in accordance
 * with the terms of the License Agreement.
 *
 */
package com.logica.smpp.util;

import com.logica.smpp.OutbindEvent;
import com.logica.smpp.OutbindEventListener;
import com.logica.smpp.SmppObject;

/**
 * The SimpleOutbindListener class is example class for <tt>OutbindEventListener</tt>.
 * It stores all <tt>OutbindEvent</tt> passed to it's <tt>handleOutbind</tt>
 * method to <tt>Queue</tt> and notifies thread waiting on <tt>signaller</tt> object.<p>
 * The typical usage would be:<p>
 * <blockquote><pre>
 * Connection conn = new TCPIPConnection("123.123.123.123",1234);
 * OutbindReceiver rcvr = new OutbindReceiver(conn);
 * // <tt>this</tt> as parameter means that the listener will notify
 * // the calling thread
 * SimpleOutbindListener listener = new SimpleOutbindListener(this);
 * OutbindEvent event;
 * rcvr.setOutbindListener(listener);
 * rcvr.startReceiving();
 * while (true) {
 *    listener.waitOutbind(1000);
 *    event = listener.getOutbindEvent();
 *    if (event != null) {
 *       // process the event
 *    }
 * }
 * </pre></blockquote>
 *
 * @author Logica Mobile Networks SMPP Open Source Team
 * @version 1.0, 11 Jun 2001
 */

public class SimpleOutbindListener
extends SmppObject
implements OutbindEventListener
{
    private Queue eventQueue = new Queue();
    
    private Object signaller = null;
    
    public SimpleOutbindListener()
    {
        signaller = this;
    }
    
    public SimpleOutbindListener(Object signaller)
    {
        this.signaller = signaller;
    }
    
    public void handleOutbind(OutbindEvent outbind)
    {
        eventQueue.enqueue(outbind);
        signaller.notify();
    }
    
    public OutbindEvent getOutbindEvent()
    {
        if (!eventQueue.isEmpty()) {
            return (OutbindEvent)eventQueue.dequeue();
        } else {
            return null;
        }
    }
    
    public void waitOutbind()
    throws InterruptedException
    {
        signaller.wait();
    }
    
    public void waitOutbind(long timeout)
    throws InterruptedException
    {
        signaller.wait(timeout);
    }

    public void waitOutbind(long timeout, int nanos)
    throws InterruptedException
    {
        signaller.wait(timeout,nanos);
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -