Java源码示例:org.apache.catalina.tribes.ChannelReceiver

示例1
public ChannelCoordinator(ChannelReceiver receiver,
                          ChannelSender sender,
                          MembershipService service) {

    this.optionFlag = Channel.SEND_OPTIONS_BYTE_MESSAGE |
            Channel.SEND_OPTIONS_USE_ACK |
            Channel.SEND_OPTIONS_SYNCHRONIZED_ACK;

    this.setClusterReceiver(receiver);
    this.setClusterSender(sender);
    this.setMembershipService(service);
}
 
示例2
public void setClusterReceiver(ChannelReceiver clusterReceiver) {
    if ( clusterReceiver != null ) {
        this.clusterReceiver = clusterReceiver;
        this.clusterReceiver.setMessageListener(this);
    } else {
        if  (this.clusterReceiver!=null ) this.clusterReceiver.setMessageListener(null);
        this.clusterReceiver = null;
    }
}
 
示例3
/**
 * Store the specified Channel children.
 *
 * @param aWriter
 *            PrintWriter to which we are storing
 * @param indent
 *            Number of spaces to indent this element
 * @param aChannel
 *            Channel whose properties are being stored
 *
 * @exception Exception
 *                if an exception occurs while storing
 */
@Override
public void storeChildren(PrintWriter aWriter, int indent, Object aChannel,
        StoreDescription parentDesc) throws Exception {
    if (aChannel instanceof Channel) {
        Channel channel = (Channel) aChannel;
        if (channel instanceof ManagedChannel) {
            ManagedChannel managedChannel = (ManagedChannel) channel;
            // Store nested <Membership> element
            MembershipService service = managedChannel.getMembershipService();
            if (service != null) {
                storeElement(aWriter, indent, service);
            }
            // Store nested <Sender> element
            ChannelSender sender = managedChannel.getChannelSender();
            if (sender != null) {
                storeElement(aWriter, indent, sender);
            }
            // Store nested <Receiver> element
            ChannelReceiver receiver = managedChannel.getChannelReceiver();
            if (receiver != null) {
                storeElement(aWriter, indent, receiver);
            }
            Iterator<ChannelInterceptor> interceptors = managedChannel.getInterceptors();
            while (interceptors.hasNext()) {
                ChannelInterceptor interceptor = interceptors.next();
                storeElement(aWriter, indent, interceptor);
            }
        }
   }
}
 
示例4
public ChannelCoordinator(ChannelReceiver receiver,
                          ChannelSender sender,
                          MembershipService service) {
    this();
    this.setClusterReceiver(receiver);
    this.setClusterSender(sender);
    this.setMembershipService(service);
}
 
示例5
public void setClusterReceiver(ChannelReceiver clusterReceiver) {
    if ( clusterReceiver != null ) {
        this.clusterReceiver = clusterReceiver;
        this.clusterReceiver.setMessageListener(this);
    } else {
        if  (this.clusterReceiver!=null ) this.clusterReceiver.setMessageListener(null);
        this.clusterReceiver = null;
    }
}
 
示例6
public ChannelCoordinator(ChannelReceiver receiver,
                          ChannelSender sender,
                          MembershipService service) {
    this();
    this.setClusterReceiver(receiver);
    this.setClusterSender(sender);
    this.setMembershipService(service);
}
 
示例7
public void setClusterReceiver(ChannelReceiver clusterReceiver) {
    if ( clusterReceiver != null ) {
        this.clusterReceiver = clusterReceiver;
        this.clusterReceiver.setMessageListener(this);
    } else {
        if  (this.clusterReceiver!=null ) this.clusterReceiver.setMessageListener(null);
        this.clusterReceiver = null;
    }
}
 
示例8
public ChannelReceiver getClusterReceiver() {
    return clusterReceiver;
}
 
示例9
/**
 * Returns the channel receiver component
 * @return ChannelReceiver
 */
@Override
public ChannelReceiver getChannelReceiver() {
    return coordinator.getClusterReceiver();
}
 
示例10
/**
 * Sets the channel receiver component
 * @param clusterReceiver ChannelReceiver
 */
@Override
public void setChannelReceiver(ChannelReceiver clusterReceiver) {
    coordinator.setClusterReceiver(clusterReceiver);
}
 
示例11
@Override
public synchronized void run() {
    if ( buffer == null ) {
        int size = getRxBufSize();
        if (key.channel() instanceof DatagramChannel) {
            size = ChannelReceiver.MAX_UDP_SIZE;
        }
        if ( (getOptions() & OPTION_DIRECT_BUFFER) == OPTION_DIRECT_BUFFER) {
            buffer = ByteBuffer.allocateDirect(size);
        } else {
            buffer = ByteBuffer.allocate(size);
        }
    } else {
        buffer.clear();
    }
    if (key == null) {
        return; // just in case
    }
    if ( log.isTraceEnabled() )
        log.trace("Servicing key:"+key);

    try {
        ObjectReader reader = (ObjectReader)key.attachment();
        if ( reader == null ) {
            if ( log.isTraceEnabled() )
                log.trace("No object reader, cancelling:"+key);
            cancelKey(key);
        } else {
            if ( log.isTraceEnabled() )
                log.trace("Draining channel:"+key);

            drainChannel(key, reader);
        }
    } catch (Exception e) {
        //this is common, since the sockets on the other
        //end expire after a certain time.
        if ( e instanceof CancelledKeyException ) {
            //do nothing
        } else if ( e instanceof IOException ) {
            //dont spew out stack traces for IO exceptions unless debug is enabled.
            if (log.isDebugEnabled()) log.debug ("IOException in replication worker, unable to drain channel. Probable cause: Keep alive socket closed["+e.getMessage()+"].", e);
            else log.warn (sm.getString("nioReplicationTask.unable.drainChannel.ioe", e.getMessage()));
        } else if ( log.isErrorEnabled() ) {
            //this is a real error, log it.
            log.error(sm.getString("nioReplicationTask.exception.drainChannel"),e);
        }
        cancelKey(key);
    }
    key = null;
    // done, ready for more, return to pool
    getTaskPool().returnWorker (this);
}
 
示例12
public static Data createRandomData() {
    return createRandomData(ChannelReceiver.MAX_UDP_SIZE);
}
 
示例13
public static Data createRandomData() {
    return createRandomData(ChannelReceiver.MAX_UDP_SIZE);
}
 
示例14
public ChannelReceiver getClusterReceiver() {
    return clusterReceiver;
}
 
示例15
/**
 * Returns the channel receiver component
 * @return ChannelReceiver
 */
@Override
public ChannelReceiver getChannelReceiver() {
    return coordinator.getClusterReceiver();
}
 
示例16
/**
 * Sets the channel receiver component
 * @param clusterReceiver ChannelReceiver
 */
@Override
public void setChannelReceiver(ChannelReceiver clusterReceiver) {
    coordinator.setClusterReceiver(clusterReceiver);
}
 
示例17
@Override
public synchronized void run() {
    if ( buffer == null ) {
        int size = getRxBufSize();
        if (key.channel() instanceof DatagramChannel) {
            size = ChannelReceiver.MAX_UDP_SIZE;
        }
        if ( (getOptions() & OPTION_DIRECT_BUFFER) == OPTION_DIRECT_BUFFER) {
            buffer = ByteBuffer.allocateDirect(size);
        } else {
            buffer = ByteBuffer.allocate(size);
        }
    } else {
        buffer.clear();
    }
    if (key == null) {
        return; // just in case
    }
    if ( log.isTraceEnabled() )
        log.trace("Servicing key:"+key);

    try {
        ObjectReader reader = (ObjectReader)key.attachment();
        if ( reader == null ) {
            if ( log.isTraceEnabled() )
                log.trace("No object reader, cancelling:"+key);
            cancelKey(key);
        } else {
            if ( log.isTraceEnabled() )
                log.trace("Draining channel:"+key);

            drainChannel(key, reader);
        }
    } catch (Exception e) {
        //this is common, since the sockets on the other
        //end expire after a certain time.
        if ( e instanceof CancelledKeyException ) {
            //do nothing
        } else if ( e instanceof IOException ) {
            //dont spew out stack traces for IO exceptions unless debug is enabled.
            if (log.isDebugEnabled()) log.debug ("IOException in replication worker, unable to drain channel. Probable cause: Keep alive socket closed["+e.getMessage()+"].", e);
            else log.warn ("IOException in replication worker, unable to drain channel. Probable cause: Keep alive socket closed["+e.getMessage()+"].");
        } else if ( log.isErrorEnabled() ) {
            //this is a real error, log it.
            log.error("Exception caught in TcpReplicationThread.drainChannel.",e);
        }
        cancelKey(key);
    } finally {

    }
    key = null;
    // done, ready for more, return to pool
    getTaskPool().returnWorker (this);
}
 
示例18
public static Data createRandomData() {
    return createRandomData(ChannelReceiver.MAX_UDP_SIZE);
}
 
示例19
public static Data createRandomData() {
    return createRandomData(ChannelReceiver.MAX_UDP_SIZE);
}
 
示例20
public ChannelReceiver getClusterReceiver() {
    return clusterReceiver;
}
 
示例21
/**
 * Returns the channel receiver component
 * @return ChannelReceiver
 */
@Override
public ChannelReceiver getChannelReceiver() {
    return coordinator.getClusterReceiver();
}
 
示例22
/**
 * Sets the channel receiver component
 * @param clusterReceiver ChannelReceiver
 */
@Override
public void setChannelReceiver(ChannelReceiver clusterReceiver) {
    coordinator.setClusterReceiver(clusterReceiver);
}
 
示例23
@Override
public synchronized void run() {
    if ( buffer == null ) {
        int size = getRxBufSize();
        if (key.channel() instanceof DatagramChannel) {
            size = ChannelReceiver.MAX_UDP_SIZE;
        }
        if ( (getOptions() & OPTION_DIRECT_BUFFER) == OPTION_DIRECT_BUFFER) {
            buffer = ByteBuffer.allocateDirect(size);
        } else {
            buffer = ByteBuffer.allocate(size);
        }
    } else {
        buffer.clear();
    }
    if (key == null) {
        return; // just in case
    }
    if ( log.isTraceEnabled() )
        log.trace("Servicing key:"+key);

    try {
        ObjectReader reader = (ObjectReader)key.attachment();
        if ( reader == null ) {
            if ( log.isTraceEnabled() )
                log.trace("No object reader, cancelling:"+key);
            cancelKey(key);
        } else {
            if ( log.isTraceEnabled() )
                log.trace("Draining channel:"+key);

            drainChannel(key, reader);
        }
    } catch (Exception e) {
        //this is common, since the sockets on the other
        //end expire after a certain time.
        if ( e instanceof CancelledKeyException ) {
            //do nothing
        } else if ( e instanceof IOException ) {
            //dont spew out stack traces for IO exceptions unless debug is enabled.
            if (log.isDebugEnabled()) log.debug ("IOException in replication worker, unable to drain channel. Probable cause: Keep alive socket closed["+e.getMessage()+"].", e);
            else log.warn ("IOException in replication worker, unable to drain channel. Probable cause: Keep alive socket closed["+e.getMessage()+"].");
        } else if ( log.isErrorEnabled() ) {
            //this is a real error, log it.
            log.error("Exception caught in TcpReplicationThread.drainChannel.",e);
        }
        cancelKey(key);
    } finally {

    }
    key = null;
    // done, ready for more, return to pool
    getTaskPool().returnWorker (this);
}
 
示例24
public static Data createRandomData() {
    return createRandomData(ChannelReceiver.MAX_UDP_SIZE);
}
 
示例25
public static Data createRandomData() {
    return createRandomData(ChannelReceiver.MAX_UDP_SIZE);
}