protected taskWrapper( NonDaemonTask _task ) { task = _task; sem = new AESemaphore("NonDaemonTaskRunner::taskWrapper"); }
@Override public void setAsyncStart() { went_async[0] = new AESemaphore( "async" ); }
public ThreadPool( String _name, int _max_size, boolean _queue_when_full ) { name = _name; max_size = _max_size; queue_when_full = _queue_when_full; thread_sem = new AESemaphore( "ThreadPool::" + name, _max_size ); busy = new ArrayList( _max_size ); }
protected ListenerManager( String _name, ListenerManagerDispatcher<T> _target, boolean _async ) { name = _name; target = _target; async = _async; if ( target instanceof ListenerManagerDispatcherWithException ){ target_with_exception = (ListenerManagerDispatcherWithException)target; } if ( async ){ dispatch_sem = new AESemaphore("ListenerManager::"+name); dispatch_queue = new LinkedList<>(); if ( target_with_exception != null ){ throw( new RuntimeException( "Can't have an async manager with exceptions!")); } } }
protected SemaphoreImpl( PluginInterface pi ) { synchronized( SemaphoreImpl.class ){ sem = new AESemaphore("Plugin " + pi.getPluginID() + ":" + next_sem_id++ ); } }
protected FMFileManagerImpl() { limit_size = COConfigurationManager.getIntParameter( "File Max Open" ); limited = limit_size > 0; if ( DEBUG ){ System.out.println( "FMFileManager::init: limit = " + limit_size ); files = new ArrayList(); } map = new LinkedHashMap( limit_size, (float)0.75, true ); // ACCESS order selected - this means oldest if ( limited ){ close_queue_sem = new AESemaphore("FMFileManager::closeqsem"); close_queue = new LinkedList(); Thread t = new AEThread("FMFileManager::closeQueueDispatcher") { @Override public void runSupport() { closeQueueDispatch(); } }; t.setDaemon(true); t.start(); } }
sem = new AESemaphore( "DMS:block" );
public Object removeValue( Object key ) { if ( !initialised ){ return( null ); } AESemaphore sem = new AESemaphore( "ValueHolder:remove" ); Object[] request = new Object[]{ key, NULL_VALUE, sem }; synchronized( request_queue ){ request_queue.add( request ); } request_sem.release(); sem.reserve(); return(request[1]); }
public Object setValue( Object key, Object value ) { if ( !initialised ){ return( null ); } AESemaphore sem = new AESemaphore( "ValueHolder:set" ); Object[] request = new Object[]{ key, value, sem }; synchronized( request_queue ){ request_queue.add( request ); } request_sem.release(); sem.reserve(); return(request[1]); }
public Object getValue( Object key ) { if ( !initialised ){ return( null ); } AESemaphore sem = new AESemaphore( "ValueHolder:get" ); Object[] request = new Object[]{ key, null, sem }; synchronized( request_queue ){ request_queue.add( request ); } request_sem.release(); sem.reserve(); return( request[1] ); } }
@Override public void runSupport() { Display display = shell.getDisplay(); final String[] path = { null }; final AESemaphore sem = new AESemaphore("ShareUtils:file"); display.asyncExec(new AERunnable() { @Override public void runSupport() { try{ FileDialog dialog = new FileDialog(shell, SWT.SYSTEM_MODAL | SWT.OPEN); dialog.setFilterPath( TorrentOpener.getFilterPathData() ); dialog.setText(MessageText.getString("MainWindow.dialog.share.sharefile")); path[0] = TorrentOpener.setFilterPathData( dialog.open() ); }finally{ sem.release(); } } }); sem.reserve(); if ( path[0] != null ){ shareFile( path[0] ); } } }.start();
@Override public String reverseDNSLookup( InetAddress address ) { final AESemaphore sem = new AESemaphore("Utilities:reverseDNS"); final String[] res = { null }; IPToHostNameResolver.addResolverRequest( address.getHostAddress(), new IPToHostNameResolverListener() { @Override public void IPResolutionComplete( String result, boolean succeeded ) { if ( succeeded ){ res[0] = result; } sem.release(); } }); sem.reserve( 60000 ); return( res[0] ); }
final AESemaphore sem = new AESemaphore( "Core:runNonDaemon" );
final AESemaphore sem = new AESemaphore( "wait" );
@Override public void run() { final AESemaphore sem = new AESemaphore( "VCC:init" ); new AEThread2( "VCC:init", true ) { @Override public void run() { try{ getVersionCheckInfo( REASON_UPDATE_CHECK_START ); }finally{ sem.release(); } } }.start(); if ( !sem.reserve( 5000 )){ Debug.out( "Timeout waiting for version check to complete" ); } } });
@Override public void setEnabled( final boolean _enabled ) { // unfortunately we need this to run synchronously as the caller may be disabling it // and then setting speed limits in which case we can't go async and restore the // original values below and overwrite the new limit... final AESemaphore sem = new AESemaphore( "SpeedManagerImpl.setEnabled" ); // single thread enable/disable (and derivative reset) ops dispatcher.dispatch( new AERunnable() { @Override public void runSupport() { try{ setEnabledSupport( _enabled ); }finally{ sem.release(); } } }); if ( !sem.reserve( 10000 )){ Debug.out( "operation didn't complete in time" ); } }
final AESemaphore sem = new AESemaphore("waitUntilClosed");
@Override public void UIAttached(UIInstance instance) { if (instance instanceof UISWTInstance) { ui_manager.removeUIListener(this); final AESemaphore wait_sem = new AESemaphore( "SideBar:wait" ); Utils.execSWTThread(new AERunnable() { @Override public void runSupport() { try{ try { loadCloseables(); } catch (Throwable t) { Debug.out(t); } setupPluginViews(); }finally{ initialized = true; wait_sem.release(); } } }); // we need to wait for the loadCloseables to complete as there is code in MainMDISetup that runs on the 'UIAttachedComplete' // callback that needs the closables to be loaded (when setting 'start tab') otherwise the order gets broken if ( !wait_sem.reserve(10*1000)){ Debug.out( "eh?"); } } } });
private void waitForEvents() { if ( async_dispatcher.isDispatchThread()){ Debug.out( "Deadlock - recode this monkey boy" ); }else{ final AESemaphore sem = new AESemaphore( "waiter" ); async_dispatcher.dispatch( new AERunnable() { @Override public void runSupport() { sem.release(); } }); if ( !sem.reserve( 10*1000 )){ Debug.out( "Timeout waiting for event dispatch" ); } } }
@Override public String[] selectNetworks( final String description, final String[] tracker_networks ) { final Display display = Utils.getDisplay(); if ( display.isDisposed()){ return( null ); } final AESemaphore sem = new AESemaphore("NetworkClassifier"); final classifierDialog[] dialog = new classifierDialog[1]; try{ Utils.execSWTThread( new AERunnable() { @Override public void runSupport() { dialog[0] = new classifierDialog( sem, display, description, tracker_networks ); } }); }catch( Throwable e ){ Debug.printStackTrace( e ); return( null ); } sem.reserve(); return( dialog[0].getSelection()); }