File: RserveException.java

package info (click to toggle)
rjava 1.0-11-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,184 kB
  • sloc: java: 13,223; ansic: 5,479; sh: 3,776; xml: 325; makefile: 250; perl: 33
file content (77 lines) | stat: -rw-r--r-- 2,969 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// JRclient library - client interface to Rserve, see http://www.rosuda.org/Rserve/
// Copyright (C) 2004 Simon Urbanek
// --- for licensing information see LICENSE file in the original JRclient distribution ---
//
//  RserveException.java
//
//  Created by Simon Urbanek on Mon Aug 18 2003.
//
//  $Id$
//

package org.rosuda.REngine.Rserve;

import org.rosuda.REngine.Rserve.protocol.RPacket;
import org.rosuda.REngine.Rserve.protocol.RTalk;
import org.rosuda.REngine.REngineException;

public class RserveException extends REngineException {
    protected String err;
    protected int reqReturnCode;

    public String getRequestErrorDescription() {
		return getRequestErrorDescription(reqReturnCode);
	}
	
    public String getRequestErrorDescription(int code) {
        switch(code) {
            case 0: return "no error";
            case 2: return "R parser: input incomplete";
            case 3: return "R parser: syntax error";
            case RTalk.ERR_auth_failed: return "authorization failed";
            case RTalk.ERR_conn_broken: return "connection broken";
            case RTalk.ERR_inv_cmd: return "invalid command";
            case RTalk.ERR_inv_par: return "invalid parameter";
            case RTalk.ERR_IOerror: return "I/O error on the server";
            case RTalk.ERR_not_open: return "connection is not open";
            case RTalk.ERR_access_denied: return "access denied (local to the server)";
            case RTalk.ERR_unsupported_cmd: return "unsupported command";
            case RTalk.ERR_unknown_cmd: return "unknown command";
            case RTalk.ERR_data_overflow: return "data overflow, incoming data too big";
            case RTalk.ERR_object_too_big: return "evaluation successful, but returned object is too big to transport";
            case RTalk.ERR_out_of_mem: return "FATAL: Rserve ran out of memory, closing connection";
			case RTalk.ERR_session_busy: return "session is busy";
			case RTalk.ERR_detach_failed: return "session detach failed";
		case RTalk.ERR_ctrl_closed: return "control pipe to master process is closed/broken";
        }
        return "error code: "+code;
    }

    public String getMessage() {
        return super.getMessage() + ((reqReturnCode != -1) ? ", request status: " + getRequestErrorDescription() : "");
    }
    
    public RserveException(RConnection c, String msg) {
        this(c,msg,-1);
    }

    public RserveException(RConnection c, String msg, Throwable cause) {
        super(c, msg, cause);
	reqReturnCode = -1;
	if (c != null) c.lastError = getMessage();
    }

    public RserveException(RConnection c, String msg, int requestReturnCode) {
        super(c, msg);
        reqReturnCode = requestReturnCode;
	if (c != null) c.lastError = getMessage();
    }

    public RserveException(RConnection c, String msg, RPacket p) {
	this(c, msg, (p == null) ? -1 : p.getStat());
    }
	
    public int getRequestReturnCode() {
        return reqReturnCode;
    }
}