Commit f7798ec9 authored by NicolaiO's avatar NicolaiO 🐼

eclipse stuff

parent 66247baf
Pipeline #11 skipped
......@@ -11,7 +11,7 @@
<classpathentry kind="src" path="plugins/linux/src/java"/>
<classpathentry kind="src" path="plugins/windows/src/java"/>
<classpathentry kind="src" path="plugins/OSX/src/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
......
add_header=true
add_todo=false
eclipse.preferences.version=1
filter_fields=false
filter_methods=false
header_text=/*\r\n * *********************************************************\r\n * Copyright (c) 2009 - ${year}, DHBW Mannheim - Tigers Mannheim\r\n * Project\: TIGERS - Sumatra\r\n * Date\: ${date}\r\n * Author(s)\:\r\n * *********************************************************\r\n */
project_specific_settings=true
replace_header=true
replacements=<?xml version\="1.0" standalone\="yes"?>\n\n<replacements>\n<replacement key\="get" scope\="1" mode\="0">Gets the</replacement>\n<replacement key\="set" scope\="1" mode\="0">Sets the</replacement>\n<replacement key\="add" scope\="1" mode\="0">Adds the</replacement>\n<replacement key\="edit" scope\="1" mode\="0">Edits the</replacement>\n<replacement key\="remove" scope\="1" mode\="0">Removes the</replacement>\n<replacement key\="init" scope\="1" mode\="0">Inits the</replacement>\n<replacement key\="parse" scope\="1" mode\="0">Parses the</replacement>\n<replacement key\="create" scope\="1" mode\="0">Creates the</replacement>\n<replacement key\="build" scope\="1" mode\="0">Builds the</replacement>\n<replacement key\="is" scope\="1" mode\="0">Checks if is</replacement>\n<replacement key\="print" scope\="1" mode\="0">Prints the</replacement>\n<replacement key\="has" scope\="1" mode\="0">Checks for</replacement>\n</replacements>\n\n
use_internal_formatter=true
eclipse.preferences.version=1
encoding//test/src=ISO-8859-1
encoding/<project>=UTF-8
encoding/src=UTF-8
This diff is collapsed.
cleanup.add_default_serial_version_id=false
cleanup.add_generated_serial_version_id=true
cleanup.add_missing_annotations=true
cleanup.add_missing_deprecated_annotations=true
cleanup.add_missing_methods=true
cleanup.add_missing_nls_tags=false
cleanup.add_missing_override_annotations=true
cleanup.add_missing_override_annotations_interface_methods=true
cleanup.add_serial_version_id=true
cleanup.always_use_blocks=true
cleanup.always_use_parentheses_in_expressions=true
cleanup.always_use_this_for_non_static_field_access=false
cleanup.always_use_this_for_non_static_method_access=false
cleanup.convert_functional_interfaces=false
cleanup.convert_to_enhanced_for_loop=false
cleanup.correct_indentation=false
cleanup.format_source_code=true
cleanup.format_source_code_changes_only=false
cleanup.insert_inferred_type_arguments=false
cleanup.make_local_variable_final=false
cleanup.make_parameters_final=true
cleanup.make_private_fields_final=true
cleanup.make_type_abstract_if_missing_method=false
cleanup.make_variable_declarations_final=true
cleanup.never_use_blocks=false
cleanup.never_use_parentheses_in_expressions=false
cleanup.organize_imports=true
cleanup.qualify_static_field_accesses_with_declaring_class=false
cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
cleanup.qualify_static_member_accesses_with_declaring_class=true
cleanup.qualify_static_method_accesses_with_declaring_class=false
cleanup.remove_private_constructors=true
cleanup.remove_redundant_type_arguments=true
cleanup.remove_trailing_whitespaces=false
cleanup.remove_trailing_whitespaces_all=false
cleanup.remove_trailing_whitespaces_ignore_empty=true
cleanup.remove_unnecessary_casts=true
cleanup.remove_unnecessary_nls_tags=true
cleanup.remove_unused_imports=true
cleanup.remove_unused_local_variables=false
cleanup.remove_unused_private_fields=true
cleanup.remove_unused_private_members=false
cleanup.remove_unused_private_methods=true
cleanup.remove_unused_private_types=true
cleanup.sort_members=false
cleanup.sort_members_all=true
cleanup.use_anonymous_class_creation=false
cleanup.use_blocks=true
cleanup.use_blocks_only_for_return_and_throw=false
cleanup.use_lambda=true
cleanup.use_parentheses_in_expressions=true
cleanup.use_this_for_non_static_field_access=true
cleanup.use_this_for_non_static_field_access_only_if_necessary=true
cleanup.use_this_for_non_static_method_access=true
cleanup.use_this_for_non_static_method_access_only_if_necessary=true
cleanup.use_type_arguments=false
cleanup_profile=_Tigers
cleanup_settings_version=2
eclipse.preferences.version=1
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
formatter_profile=_Tigers
formatter_settings_version=12
org.eclipse.jdt.ui.ignorelowercasenames=true
org.eclipse.jdt.ui.importorder=java;javax;org;com;
org.eclipse.jdt.ui.javadoc=true
org.eclipse.jdt.ui.ondemandthreshold=99
org.eclipse.jdt.ui.staticondemandthreshold=99
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * @author ${user}\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/* &\#13;\n * *********************************************************&\#13;\n * Copyright (c) 2009 - ${year}, DHBW Mannheim - Tigers Mannheim&\#13;\n * Project\: TIGERS - Sumatra&\#13;\n * Date\: ${date}&\#13;\n * Author(s)\: ${user}&\#13;\n *&\#13;\n * *********************************************************&\#13;\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**&\#13;\n * &\#13;\n * @author ${user} &\#13;\n * ${tags}&\#13;\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/** */</template><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * @author ${user}\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="false" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody"/><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">log.error("", ${exception_var});</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
sp_cleanup.add_default_serial_version_id=true
sp_cleanup.add_generated_serial_version_id=false
sp_cleanup.add_missing_annotations=true
sp_cleanup.add_missing_deprecated_annotations=true
sp_cleanup.add_missing_methods=false
sp_cleanup.add_missing_nls_tags=false
sp_cleanup.add_missing_override_annotations=true
sp_cleanup.add_missing_override_annotations_interface_methods=true
sp_cleanup.add_serial_version_id=false
sp_cleanup.always_use_blocks=true
sp_cleanup.always_use_parentheses_in_expressions=true
sp_cleanup.always_use_this_for_non_static_field_access=false
sp_cleanup.always_use_this_for_non_static_method_access=false
sp_cleanup.convert_functional_interfaces=false
sp_cleanup.convert_to_enhanced_for_loop=true
sp_cleanup.correct_indentation=false
sp_cleanup.format_source_code=true
sp_cleanup.format_source_code_changes_only=false
sp_cleanup.insert_inferred_type_arguments=false
sp_cleanup.make_local_variable_final=false
sp_cleanup.make_parameters_final=true
sp_cleanup.make_private_fields_final=false
sp_cleanup.make_type_abstract_if_missing_method=false
sp_cleanup.make_variable_declarations_final=true
sp_cleanup.never_use_blocks=false
sp_cleanup.never_use_parentheses_in_expressions=false
sp_cleanup.on_save_use_additional_actions=true
sp_cleanup.organize_imports=true
sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
sp_cleanup.qualify_static_member_accesses_with_declaring_class=true
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
sp_cleanup.remove_private_constructors=true
sp_cleanup.remove_redundant_type_arguments=false
sp_cleanup.remove_trailing_whitespaces=true
sp_cleanup.remove_trailing_whitespaces_all=false
sp_cleanup.remove_trailing_whitespaces_ignore_empty=true
sp_cleanup.remove_unnecessary_casts=true
sp_cleanup.remove_unnecessary_nls_tags=true
sp_cleanup.remove_unused_imports=true
sp_cleanup.remove_unused_local_variables=false
sp_cleanup.remove_unused_private_fields=true
sp_cleanup.remove_unused_private_members=false
sp_cleanup.remove_unused_private_methods=true
sp_cleanup.remove_unused_private_types=true
sp_cleanup.sort_members=false
sp_cleanup.sort_members_all=false
sp_cleanup.use_anonymous_class_creation=false
sp_cleanup.use_blocks=true
sp_cleanup.use_blocks_only_for_return_and_throw=false
sp_cleanup.use_lambda=false
sp_cleanup.use_parentheses_in_expressions=true
sp_cleanup.use_this_for_non_static_field_access=true
sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
sp_cleanup.use_this_for_non_static_method_access=true
sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
sp_cleanup.use_type_arguments=false
#Fri Jul 30 18:30:20 CEST 2010
eclipse.preferences.version=1
org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
#Wed Apr 13 09:07:41 CEST 2011
DELEGATES_PREFERENCE=delegateValidatorList
USER_BUILD_PREFERENCE=enabledBuildValidatorList
USER_MANUAL_PREFERENCE=enabledManualValidatorList
USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationtrueversion1.2.201.v201101270100
eclipse.preferences.version=1
override=true
suspend=true
vf.version=3
......@@ -135,6 +135,7 @@ final class ButtonUsage implements Usage {
}
}
@Override
public final String toString() {
return "ButtonUsage (" + button_id + ")";
}
......
......@@ -68,6 +68,7 @@ final class ElementType {
this.type_id = type_id;
}
@Override
public final String toString() {
return "ElementType (0x" + Integer.toHexString(type_id) + ")";
}
......
......@@ -112,6 +112,7 @@ final class GenericDesktopUsage implements Usage {
this.usage_id = usage_id;
}
@Override
public final String toString() {
return "GenericDesktopUsage (0x" + Integer.toHexString(usage_id) + ")";
}
......
......@@ -245,6 +245,7 @@ final class KeyboardUsage implements Usage {
map[usage] = this;
}
@Override
public final String toString() {
return "KeyboardUsage (0x" + Integer.toHexString(usage) + ")";
}
......
......@@ -56,18 +56,22 @@ final class OSXAbstractController extends AbstractController {
this.port = device.getPortType();
}
@Override
protected final boolean getNextDeviceEvent(Event event) throws IOException {
return OSXControllers.getNextDeviceEvent(event, queue);
}
@Override
protected final void setDeviceEventQueueSize(int size) throws IOException {
queue.setQueueDepth(size);
}
@Override
public Type getType() {
return type;
}
@Override
public final PortType getPortType() {
return port;
}
......
......@@ -56,6 +56,7 @@ class OSXComponent extends AbstractComponent {
return element.isRelative();
}
@Override
public boolean isAnalog() {
return element.isAnalog();
}
......@@ -64,6 +65,7 @@ class OSXComponent extends AbstractComponent {
return element;
}
@Override
protected float poll() throws IOException {
return OSXControllers.poll(element);
}
......
......@@ -139,10 +139,12 @@ public final class OSXEnvironmentPlugin extends ControllerEnvironment implements
}
}
@Override
public final Controller[] getControllers() {
return controllers;
}
@Override
public boolean isSupported() {
return supported;
}
......
......@@ -54,14 +54,17 @@ final class OSXKeyboard extends Keyboard {
this.port = device.getPortType();
}
@Override
protected final boolean getNextDeviceEvent(Event event) throws IOException {
return OSXControllers.getNextDeviceEvent(event, queue);
}
@Override
protected final void setDeviceEventQueueSize(int size) throws IOException {
queue.setQueueDepth(size);
}
@Override
public final PortType getPortType() {
return port;
}
......
......@@ -54,14 +54,17 @@ final class OSXMouse extends Mouse {
this.port = device.getPortType();
}
@Override
protected final boolean getNextDeviceEvent(Event event) throws IOException {
return OSXControllers.getNextDeviceEvent(event, queue);
}
@Override
protected final void setDeviceEventQueueSize(int size) throws IOException {
queue.setQueueDepth(size);
}
@Override
public final PortType getPortType() {
return port;
}
......
......@@ -96,6 +96,7 @@ final class UsagePage {
this(page_id, null);
}
@Override
public final String toString() {
return "UsagePage (0x" + Integer.toHexString(usage_page_id) + ")";
}
......
......@@ -59,10 +59,12 @@ class UsagePair {
return usage;
}
@Override
public final int hashCode() {
return usage.hashCode() ^ usage_page.hashCode();
}
@Override
public final boolean equals(Object other) {
if (!(other instanceof UsagePair))
return false;
......@@ -70,6 +72,7 @@ class UsagePair {
return other_pair.usage.equals(usage) && other_pair.usage_page.equals(usage_page);
}
@Override
public final String toString() {
return "UsagePair: (page = " + usage_page + ", usage = " + usage + ")";
}
......
......@@ -41,10 +41,12 @@ public class AWTEnvironmentPlugin extends ControllerEnvironment implements Plugi
this.controllers = new Controller[]{new AWTKeyboard(), new AWTMouse()};
}
public Controller[] getControllers() {
@Override
public Controller[] getControllers() {
return controllers;
}
@Override
public boolean isSupported() {
return true;
}
......
......@@ -90,6 +90,7 @@ final class AWTKeyboard extends Keyboard implements AWTEventListener {
processed_events_index = 0;
}
@Override
protected final void setDeviceEventQueueSize(int size) throws IOException {
resizeEventQueue(size);
}
......@@ -99,6 +100,7 @@ final class AWTKeyboard extends Keyboard implements AWTEventListener {
awt_events.add(event);
}
@Override
public final synchronized void pollDevice() throws IOException {
for (int i = 0; i < awt_events.size(); i++) {
KeyEvent event = (KeyEvent)awt_events.get(i);
......@@ -133,6 +135,7 @@ final class AWTKeyboard extends Keyboard implements AWTEventListener {
processed_events[processed_events_index++].set(key, value, nanos);
}
@Override
protected final synchronized boolean getNextDeviceEvent(Event event) throws IOException {
if (processed_events_index == 0)
return false;
......@@ -156,10 +159,12 @@ final class AWTKeyboard extends Keyboard implements AWTEventListener {
this.value = value;
}
@Override
protected final float poll() {
return value;
}
@Override
public final boolean isAnalog() {
return false;
}
......
......@@ -111,6 +111,7 @@ final class AWTMouse extends Mouse implements AWTEventListener {
}
}
@Override
public final synchronized void pollDevice() throws IOException {
Axis wheel = (Axis)getWheel();
wheel.setValue(0);
......@@ -122,6 +123,7 @@ final class AWTMouse extends Mouse implements AWTEventListener {
awt_events.clear();
}
@Override
protected final synchronized boolean getNextDeviceEvent(Event event) throws IOException {
while (true) {
if (processed_awt_events.isEmpty())
......@@ -183,6 +185,7 @@ final class AWTMouse extends Mouse implements AWTEventListener {
return false;
}
@Override
public final boolean isAnalog() {
return true;
}
......@@ -191,6 +194,7 @@ final class AWTMouse extends Mouse implements AWTEventListener {
this.value = value;
}
@Override
protected final float poll() throws IOException {
return value;
}
......@@ -207,10 +211,12 @@ final class AWTMouse extends Mouse implements AWTEventListener {
this.value = value;
}
@Override
protected final float poll() throws IOException {
return value;
}
@Override
public final boolean isAnalog() {
return false;
}
......
......@@ -43,6 +43,7 @@ final class LinuxAbsInfo {
this.flat = flat;
}
@Override
public final String toString() {
return "AbsInfo: value = " + value + " | min = " + minimum + " | max = " + maximum + " | fuzz = " + fuzz + " | flat = " + flat;
}
......
......@@ -56,18 +56,22 @@ final class LinuxAbstractController extends AbstractController {
this.type = type;
}
@Override
public final PortType getPortType() {
return port;
}
@Override
public final void pollDevice() throws IOException {
device.pollKeyStates();
}
@Override
protected final boolean getNextDeviceEvent(Event event) throws IOException {
return LinuxControllers.getNextDeviceEvent(event, device);
}
@Override
public Type getType() {
return type;
}
......
......@@ -45,10 +45,12 @@ final class LinuxAxisDescriptor {
return code;
}
@Override
public final int hashCode() {
return type ^ code;
}
@Override
public final boolean equals(Object other) {
if (!(other instanceof LinuxAxisDescriptor))
return false;
......@@ -56,6 +58,7 @@ final class LinuxAxisDescriptor {
return descriptor.type == type && descriptor.code == code;
}
@Override
public final String toString() {
return "LinuxAxis: type = 0x" + Integer.toHexString(type) + ", code = 0x" + Integer.toHexString(code);
}
......
......@@ -13,19 +13,23 @@ public class LinuxCombinedController extends AbstractController {
this.joystickController = joystickController;
}
@Override
protected boolean getNextDeviceEvent(Event event) throws IOException {
return joystickController.getNextDeviceEvent(event);
}
@Override
public final PortType getPortType() {
return eventController.getPortType();
}
@Override
public final void pollDevice() throws IOException {
eventController.pollDevice();
joystickController.pollDevice();
}
@Override
public Type getType() {
return eventController.getType();
}
......
......@@ -56,10 +56,12 @@ class LinuxComponent extends AbstractComponent {
return component.isRelative();
}
@Override
public final boolean isAnalog() {
return component.isAnalog();
}
@Override
protected float poll() throws IOException {
return convertValue(LinuxControllers.poll(component), component.getDescriptor());
}
......@@ -68,6 +70,7 @@ class LinuxComponent extends AbstractComponent {
return getComponent().convertValue(value);
}
@Override
public final float getDeadZone() {
return component.getDeadZone();
}
......
......@@ -35,6 +35,7 @@ final class LinuxConstantFF extends LinuxForceFeedbackEffect {
super(device);
}
@Override
protected final int upload(int id, float intensity) throws IOException {
int scaled_intensity = Math.round(intensity*0x7fff);
return getDevice().uploadConstantEffect(id, 0, 0, 0, 0, 0, scaled_intensity, 0, 0, 0, 0);
......
......@@ -47,6 +47,7 @@ final class LinuxDeviceThread extends Thread {
start();
}
@Override
public synchronized final void run() {
while (true) {
if (!tasks.isEmpty()) {
......
......@@ -131,7 +131,8 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
* @return Returns a list of all controllers available to this environment,
* or an empty array if there are no controllers in this environment.
*/
public final Controller[] getControllers() {
@Override
public final Controller[] getControllers() {
return controllers;
}
......@@ -481,6 +482,7 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
}
private final class ShutdownHook extends Thread {
@Override
public final void run() {
for (int i = 0; i < devices.size(); i++) {
try {
......@@ -493,6 +495,7 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
}
}
@Override
public boolean isSupported() {
return supported;
}
......
......@@ -378,6 +378,7 @@ final class LinuxEventDevice implements LinuxDevice {
return;
closed = true;
LinuxEnvironmentPlugin.execute(new LinuxDeviceTask() {
@Override
protected final Object execute() throws IOException {
nClose(fd);
return null;
......@@ -391,6 +392,7 @@ final class LinuxEventDevice implements LinuxDevice {
throw new IOException("Device is closed");
}
@Override