protected void processEvent(Sim_event ev){
       
        switch ( ev.get_tag() )
        {
            case AuctionTags.AUCTION_TIMEOUT:
    			synchronized(syncStep){
    				if(!isClosed())
    					closeAuction();
    			}
        	break;
        	
            case AuctionTags.AUCTION_PROPOSE:
         		MessageBid bid = (MessageBid)ev.get_data();
    			synchronized(syncStep){ 
    				if(!isClosed())
    					this.onReceiveBid(bid);
    			}
            break;
            
            case AuctionTags.AUCTION_ASK:
         		MessageAsk ask = (MessageAsk)ev.get_data();
    			synchronized(syncStep){ 
    				if(!isClosed())
    					this.onReceiveAsk(ask);
    			}
            break;
            
            case AuctionTags.AUCTION_START:
    			synchronized(syncStep){ 
    				if(!isClosed())
    					this.startAuction();
    			}
        	break;
            
            // other unknown tags are processed by this method
            default:
            	processOtherEvent(ev);
            break;
        }
    }