14c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat/*
24c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat * Copyright (C) 2006 The Android Open Source Project
34c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat *
44c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat * Licensed under the Apache License, Version 2.0 (the "License");
54c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat * you may not use this file except in compliance with the License.
64c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat * You may obtain a copy of the License at
74c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat *
84c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat *      http://www.apache.org/licenses/LICENSE-2.0
94c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat *
104c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat * Unless required by applicable law or agreed to in writing, software
114c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat * distributed under the License is distributed on an "AS IS" BASIS,
124c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat * See the License for the specific language governing permissions and
144c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat * limitations under the License.
154c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat */
164c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat
174c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehatpackage com.android.server;
184c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat
1931c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkeyimport android.os.Parcel;
2031c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey
214c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat/**
2231c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey * An exception that indicates there was an error with a
2331c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey * {@link NativeDaemonConnector} operation.
244c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat */
2531c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkeypublic class NativeDaemonConnectorException extends Exception {
26ec4caa0f549bf9a75d20daa95b8aa8d9fab39681San Mehat    private String mCmd;
2731c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey    private NativeDaemonEvent mEvent;
284c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat
2931c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey    public NativeDaemonConnectorException(String detailMessage) {
3031c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey        super(detailMessage);
3131c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey    }
324c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat
3331c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey    public NativeDaemonConnectorException(String detailMessage, Throwable throwable) {
3431c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey        super(detailMessage, throwable);
354c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat    }
364c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat
3731c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey    public NativeDaemonConnectorException(String cmd, NativeDaemonEvent event) {
3831c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey        super("command '" + cmd + "' failed with '" + event + "'");
39ec4caa0f549bf9a75d20daa95b8aa8d9fab39681San Mehat        mCmd = cmd;
4031c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey        mEvent = event;
414c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat    }
424c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat
434c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat    public int getCode() {
4431c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey        return mEvent.getCode();
454c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat    }
46ec4caa0f549bf9a75d20daa95b8aa8d9fab39681San Mehat
47ec4caa0f549bf9a75d20daa95b8aa8d9fab39681San Mehat    public String getCmd() {
48ec4caa0f549bf9a75d20daa95b8aa8d9fab39681San Mehat        return mCmd;
49ec4caa0f549bf9a75d20daa95b8aa8d9fab39681San Mehat    }
5031c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey
5131c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey    /**
5231c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey     * Rethrow as a {@link RuntimeException} subclass that is handled by
5331c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey     * {@link Parcel#writeException(Exception)}.
5431c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey     */
5531c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey    public IllegalArgumentException rethrowAsParcelableException() {
5631c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey        throw new IllegalStateException(getMessage(), this);
5731c6e4817f6c967fc4f61c4f1d9f25743958f7deJeff Sharkey    }
584c27e0e3bed006a9ba45c6c02be5fe49827b3feaSan Mehat}
59