001        package com.croftsoft.core.util.mail;
002    
003        import com.croftsoft.core.lang.NullException;
004    import com.croftsoft.core.util.seq.Seq;
005    import com.croftsoft.core.util.slot.Slot;
006    
007        /**********************************************************************
008        * A Mail implementation backed by a Seq and a Slot.
009        *
010        * @version
011        *   $Id: MailImp.java,v 1.3 2008/09/20 05:01:27 croft Exp $
012        * @since
013        *   2008-01-27
014        * @author
015        *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
016        **********************************************************************/
017         
018        public final class  MailImp<Message>
019          implements Mail<Message>
020        ///////////////////////////////////////////////////////////////////////
021        ///////////////////////////////////////////////////////////////////////
022        {
023          
024        private final Seq<Message>   incomingSeq;
025        
026        private final Slot<Message>  outgoingSlot;
027        
028        ///////////////////////////////////////////////////////////////////////
029        ///////////////////////////////////////////////////////////////////////
030        
031        public  MailImp (
032          final Seq<Message>   incomingSeq,
033          final Slot<Message>  outgoingSlot )
034        ///////////////////////////////////////////////////////////////////////
035        {
036          NullException.check (
037            this.incomingSeq  = incomingSeq,
038            this.outgoingSlot = outgoingSlot );
039        }
040        
041        ///////////////////////////////////////////////////////////////////////
042        ///////////////////////////////////////////////////////////////////////
043        
044        public Message  get ( final int  index )
045        ///////////////////////////////////////////////////////////////////////
046        {
047          return incomingSeq.get ( index );
048        }
049    
050        public int  size ( )
051        ///////////////////////////////////////////////////////////////////////
052        {
053          return incomingSeq.size ( );
054        }
055    
056        public boolean  offer ( Message  message )
057        ///////////////////////////////////////////////////////////////////////
058        {
059          return outgoingSlot.offer ( message );
060        }
061        
062        ///////////////////////////////////////////////////////////////////////
063        ///////////////////////////////////////////////////////////////////////
064        }