Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
sfp-plus-i2c
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
9
Issues
9
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
sfp-plus-i2c
Commits
48f2d98b
Commit
48f2d98b
authored
Apr 03, 2017
by
Vincent van Beveren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
continued on quest to remove singletons
parent
dfca1fa9
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
17 additions
and
158 deletions
+17
-158
DeferredReader.java
sw/safaripark/src/nl/nikhef/safaripark/DeferredReader.java
+0
-107
DeferredReaderResult.java
...ripark/src/nl/nikhef/safaripark/DeferredReaderResult.java
+0
-7
OverlayManager.java
sw/safaripark/src/nl/nikhef/safaripark/OverlayManager.java
+0
-2
SaFariPark.java
sw/safaripark/src/nl/nikhef/safaripark/SaFariPark.java
+9
-11
ValueEditor.java
...ripark/src/nl/nikhef/safaripark/editpane/ValueEditor.java
+7
-31
JCheckBoxList.java
...aripark/src/nl/nikhef/safaripark/extra/JCheckBoxList.java
+1
-0
No files found.
sw/safaripark/src/nl/nikhef/safaripark/DeferredReader.java
deleted
100644 → 0
View file @
dfca1fa9
package
nl
.
nikhef
.
safaripark
;
import
java.util.concurrent.BlockingQueue
;
import
java.util.concurrent.LinkedBlockingQueue
;
import
nl.nikhef.sfp.ddmi.DDMIContext
;
import
nl.nikhef.sfp.ddmi.DDMIValue
;
import
nl.nikhef.tools.ListenerManager
;
/**
* Reading the I2C can take a bit of time. The deferred reader
* allows slow read out while still allowing fast applciation response.
*
* @author Vincent van Beveren
*/
public
class
DeferredReader
{
private
class
ReaderTask
{
final
DDMIContext
ctx
;
final
DDMIValue
value
;
final
DeferredReaderResult
result
;
public
ReaderTask
(
DDMIContext
ctx
,
DDMIValue
value
,
DeferredReaderResult
result
)
{
this
.
ctx
=
ctx
;
this
.
value
=
value
;
this
.
result
=
result
;
}
}
public
static
final
DeferredReader
SINGLETON
=
new
DeferredReader
();
private
ListenerManager
<
DeferredListener
>
_lm
=
new
ListenerManager
<
DeferredListener
>(
DeferredListener
.
class
);
private
BlockingQueue
<
ReaderTask
>
_queue
=
new
LinkedBlockingQueue
<
ReaderTask
>();
private
Thread
_deferredReaderThread
=
new
Thread
(
new
Runnable
()
{
@Override
public
void
run
()
{
try
{
readerThread
();
}
catch
(
InterruptedException
e
)
{
}
}
},
"DeferredReader"
);
public
DeferredReader
()
{
_deferredReaderThread
.
start
();
}
public
void
addListener
(
DeferredListener
dl
)
{
_lm
.
addListener
(
dl
);
}
public
void
removeListener
(
DeferredListener
dl
)
{
_lm
.
removeListener
(
dl
);
}
public
void
read
(
DDMIContext
ctx
,
DDMIValue
value
,
DeferredReaderResult
result
)
{
try
{
_queue
.
put
(
new
ReaderTask
(
ctx
,
value
,
result
));
_lm
.
getProxy
().
deferredTasksUpdated
(
_queue
.
size
());
}
catch
(
InterruptedException
e
)
{
}
}
private
void
readerThread
()
throws
InterruptedException
{
byte
[]
result
=
null
;
Exception
ex
=
null
;
while
(!
Thread
.
interrupted
())
{
ReaderTask
task
=
_queue
.
take
();
try
{
result
=
task
.
value
.
readRaw
(
task
.
ctx
);
ex
=
null
;
}
catch
(
Exception
e
)
{
ex
=
e
;
result
=
null
;
}
task
.
result
.
readResult
(
result
,
ex
);
_lm
.
getProxy
().
deferredTasksUpdated
(
_queue
.
size
());
}
}
public
void
shutdown
()
{
_deferredReaderThread
.
interrupt
();
try
{
_deferredReaderThread
.
join
();
}
catch
(
InterruptedException
e
)
{
}
}
}
sw/safaripark/src/nl/nikhef/safaripark/DeferredReaderResult.java
deleted
100644 → 0
View file @
dfca1fa9
package
nl
.
nikhef
.
safaripark
;
public
interface
DeferredReaderResult
{
public
void
readResult
(
byte
[]
data
,
Exception
e
);
}
\ No newline at end of file
sw/safaripark/src/nl/nikhef/safaripark/OverlayManager.java
View file @
48f2d98b
...
...
@@ -24,8 +24,6 @@ import nl.nikhef.safaripark.res.Resources;
public
class
OverlayManager
{
public
static
final
OverlayManager
SINGLETON
=
new
OverlayManager
();
private
Map
<
String
,
Boolean
>
_overlays
=
new
HashMap
<
String
,
Boolean
>();
private
File
_overlayDir
;
private
Preferences
_prefs
=
Config
.
PREFS
.
node
(
"overlays"
);
...
...
sw/safaripark/src/nl/nikhef/safaripark/SaFariPark.java
View file @
48f2d98b
...
...
@@ -58,6 +58,7 @@ public class SaFariPark extends JFrame implements BaySelectionListener, WindowLi
private
SFPManager
_sfpManager
;
private
DDMILoader
_loader
;
private
ContextCache
_ctxCache
;
private
OverlayManager
_ovlMgr
;
private
Action
_selectOverlays
=
new
ExtendedAbstractAction
(
"Select overlays"
,
Resources
.
getIcon
(
"books"
),
"Select which SFP+ overlays to load"
)
{
...
...
@@ -65,7 +66,7 @@ public class SaFariPark extends JFrame implements BaySelectionListener, WindowLi
public
void
actionPerformed
(
ActionEvent
e
)
{
OverlayManager
.
SINGLETON
.
showDialog
(
SaFariPark
.
this
);
_ovlMgr
.
showDialog
(
SaFariPark
.
this
);
}
};
...
...
@@ -73,9 +74,8 @@ public class SaFariPark extends JFrame implements BaySelectionListener, WindowLi
public
SaFariPark
()
throws
IOException
,
XMLStreamException
{
SINGLETON
=
this
;
OverlayManager
.
SINGLETON
.
scanDirectory
(
new
File
(
"overlays"
));
DDMI
.
initSingleton
(
OverlayManager
.
SINGLETON
.
getOverlays
());
setLayout
(
new
BorderLayout
());
setTitle
(
"SaFariPark"
);
setSize
(
640
,
480
);
...
...
@@ -84,6 +84,11 @@ public class SaFariPark extends JFrame implements BaySelectionListener, WindowLi
_sfpManager
=
new
SFPManager
();
_loader
=
new
DDMILoader
();
_ovlMgr
=
new
OverlayManager
();
_ovlMgr
.
scanDirectory
(
new
File
(
"overlays"
));
_loader
.
loadOverlays
(
_ovlMgr
.
getOverlays
());
_ctxCache
=
new
ContextCache
(
_sfpManager
,
_loader
);
_devMgr
=
new
DeviceManager
(
_sfpManager
);
...
...
@@ -111,7 +116,6 @@ public class SaFariPark extends JFrame implements BaySelectionListener, WindowLi
setExtendedState
(
JFrame
.
MAXIMIZED_BOTH
);
addWindowListener
(
this
);
DeferredReader
.
SINGLETON
.
addListener
(
this
);
_timer
=
new
Timer
(
1000
,
new
ActionListener
()
{
...
...
@@ -226,12 +230,6 @@ public class SaFariPark extends JFrame implements BaySelectionListener, WindowLi
public
void
deinit
()
{
_timer
.
stop
();
SwingUtilities
.
invokeLater
(
new
Runnable
()
{
@Override
public
void
run
()
{
DeferredReader
.
SINGLETON
.
shutdown
();
}
});
}
...
...
sw/safaripark/src/nl/nikhef/safaripark/editpane/ValueEditor.java
View file @
48f2d98b
...
...
@@ -6,8 +6,6 @@ import java.util.Arrays;
import
javax.swing.JLabel
;
import
javax.swing.JPanel
;
import
nl.nikhef.safaripark.DeferredReader
;
import
nl.nikhef.safaripark.DeferredReaderResult
;
import
nl.nikhef.sfp.ddmi.AccessException
;
import
nl.nikhef.sfp.ddmi.DDMIMeta
;
import
nl.nikhef.sfp.ddmi.DDMIValue
;
...
...
@@ -16,8 +14,6 @@ import nl.nikhef.tools.Utils;
@SuppressWarnings
(
"serial"
)
public
abstract
class
ValueEditor
extends
JPanel
{
private
static
final
boolean
USE_DEFERRED_READER
=
false
;
protected
final
DDMIValue
value
;
protected
byte
[]
rawValue
;
...
...
@@ -63,34 +59,14 @@ public abstract class ValueEditor extends JPanel {
clearValue
();
}
else
{
if
(
USE_DEFERRED_READER
)
{
DeferredReader
.
SINGLETON
.
read
(
_ctx
.
getContext
(),
value
,
new
DeferredReaderResult
()
{
@Override
public
void
readResult
(
byte
[]
data
,
Exception
e
)
{
rawValue
=
data
;
// RawValue == null must be a read error
if
(
rawValue
==
null
)
{
setEnabled
(
false
);
clearValue
();
}
else
{
setEnabled
(
true
);
updateValue
();
}
}
});
rawValue
=
value
.
readRaw
(
_ctx
.
getContext
());
if
(
rawValue
==
null
)
{
setEnabled
(
false
);
clearValue
();
}
else
{
rawValue
=
value
.
readRaw
(
_ctx
.
getContext
());
if
(
rawValue
==
null
)
{
setEnabled
(
false
);
clearValue
();
}
else
{
setEnabled
(
true
);
updateValue
();
}
setEnabled
(
true
);
updateValue
();
}
...
...
sw/safaripark/src/nl/nikhef/safaripark/extra/JCheckBoxList.java
View file @
48f2d98b
package
nl
.
nikhef
.
safaripark
.
extra
;
import
java.awt.Component
;
import
javax.swing.*
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment