cram 0.1.2

Cram realy awesome middleware
Documentation
use super::{ThreadMessage,ThreadPool};

use crossbeam::crossbeam_channel::{unbounded,Sender};


impl ThreadPool{
    pub fn new( num_threads : usize) -> ThreadPool{
        
        let (s,r) = unbounded();
        
        let pool = threadpool::ThreadPool::new(num_threads);
        
        for _ in 0..num_threads{
        
            let receiver = r.clone();
        
            pool.execute(move || loop {
                
                let th_message : ThreadMessage;
               
                match receiver.recv() {
                    Ok(val) => th_message = val,
                    Err(_e) => break,
                }
                if th_message.is_stateless(){
                    let info = th_message.get_stateless().unwrap();
                    (info.fun)(info.message); 
    
                }else{
                    let info = th_message.get_stateful().unwrap();
                    let mut f = info.fun;
                    f(info.message); 
                    info.sender.send((info.label, f)).unwrap();
                }
            });
        }

        ThreadPool{
            input_channel : s,
        } 
    }

    pub fn get_sender(&self) -> Sender<ThreadMessage>{
        self.input_channel.clone()
    }

}