Package org.erlide.util.erlang

Examples of org.erlide.util.erlang.Bindings


    private final IoRequestKind kind;
    private Charset encoding;

    public IoRequest(final OtpErlangTuple obj) {
        try {
            final Bindings b = OtpErlang.match(
                    "{Payload, Encoding, Leader, From, Tstamp}", obj);
            encoding = getEncoding(b.getAtom("Encoding"));

            final OtpErlangObject o = b.get("Payload");
            if (o instanceof OtpErlangString) {
                message = ((OtpErlangString) o).stringValue();
            } else if (o instanceof OtpErlangList) {
                final OtpErlangList l = (OtpErlangList) o;
                if (l.arity() == 0) {
                    message = "";
                } else {
                    try {
                        message = l.stringValue();
                    } catch (final Exception e) {
                        message = o.toString();
                    }
                }
            } else {
                message = o.toString();
            }
            message = convertEncoding(message, encoding);

            leader = b.getPid("Leader");
            final OtpErlangObject s = b.get("From");
            if (s instanceof OtpErlangPid) {
                sender = (OtpErlangPid) s;
            } else {
                sender = new OtpErlangPid("s", 0, 0, 0);
            }
View Full Code Here


    public ErlEvent parse(final OtpErlangObject msg, final IOtpNodeProxy nodeProxy) {
        if (msg == null) {
            return null;
        }
        try {
            final Bindings b = OtpErlang.match("{event,Topic,Event,Sender}", msg);
            if (b == null) {
                return null;
            }
            final String topic = b.getAtom("Topic");
            final OtpErlangObject event = b.get("Event");
            final OtpErlangPid sender = b.getPid("Sender");
            return new ErlEvent(topic, nodeProxy, event, sender);
        } catch (final TermParserException e) {
            return null;
        } catch (final OtpErlangException e) {
            ErlLogger.warn("Unrecognized event: " + msg);
View Full Code Here

    private OtpErlangObject processRequest(final OtpErlangPid from,
            final OtpErlangObject arequest) {
        if (callback == null) {
            return error;
        }
        Bindings b;
        try {
            if (arequest instanceof OtpErlangTuple) {
                final OtpErlangTuple request = (OtpErlangTuple) arequest;
                final String tag = ((OtpErlangAtom) request.elementAt(0)).atomValue();
                if ("put_chars".equals(tag)) {
                    b = OtpErlang.match("{put_chars, Chars}", request);
                    if (b != null) {
                        return callback.putChars(from, IOEncoding.latin1, b.get("Chars"));
                    }

                    b = OtpErlang.match("{put_chars, Enc:a, Chars}", request);
                    if (b != null) {
                        final String enc = b.getAtom("Enc");
                        return callback.putChars(from, IOEncoding.valueOf(enc),
                                b.get("Chars"));
                    }

                    b = OtpErlang.match("{put_chars, M:a, F:a, A}", request);
                    if (b != null) {
                        final String m = b.getAtom("M");
                        final String f = b.getAtom("F");
                        final Collection<OtpErlangObject> a = b.getList("A");
                        return callback.putChars(from, IOEncoding.latin1, m, f, a);
                    }

                    b = OtpErlang.match("{put_chars, Enc:a, M:a, F:a, A}", request);
                    if (b != null) {
                        final String enc = b.getAtom("Enc");
                        final String m = b.getAtom("M");
                        final String f = b.getAtom("F");
                        final Collection<OtpErlangObject> a = b.getList("A");
                        return callback.putChars(from, IOEncoding.valueOf(enc), m, f, a);
                    }
                    return error;
                } else if ("get_until".equals(tag)) {
                    b = OtpErlang.match("{get_until, Prompt}", request);
                    if (b != null) {
                        return callback.getUntil(IOEncoding.latin1, b.get("Prompt"));
                    }
                    b = OtpErlang.match("{get_until, Prompt, N:i}", request);
                    if (b != null) {
                        final long n = b.getLong("N");
                        return callback.getUntil(IOEncoding.latin1, b.get("Prompt"), n);
                    }
                    b = OtpErlang.match("{get_until, Enc:a, Prompt}", request);
                    if (b != null) {
                        final String enc = b.getAtom("Enc");
                        return callback
                                .getUntil(IOEncoding.valueOf(enc), b.get("Prompt"));
                    }
                    b = OtpErlang.match("{get_until, Enc:a, Prompt, N:i}", request);
                    if (b != null) {
                        final String enc = b.getAtom("Enc");
                        final long n = b.getLong("N");
                        return callback.getUntil(IOEncoding.valueOf(enc),
                                b.get("Prompt"), n);
                    }
                    b = OtpErlang.match("{get_until, Prompt, M:a, F:a, A}", request);
                    if (b != null) {
                        final String m = b.getAtom("M");
                        final String f = b.getAtom("F");
                        final Collection<OtpErlangObject> a = b.getList("A");
                        return callback.getUntil(IOEncoding.latin1, b.get("Prompt"), m,
                                f, a);
                    }
                    b = OtpErlang.match("{get_until, Enc: a, Prompt, M:a, F:a, A}",
                            request);
                    if (b != null) {
                        final String enc = b.getAtom("Enc");
                        final String m = b.getAtom("M");
                        final String f = b.getAtom("F");
                        final Collection<OtpErlangObject> a = b.getList("A");
                        return callback.getUntil(IOEncoding.valueOf(enc),
                                b.get("Prompt"), m, f, a);
                    }
                } else if ("requests".equals(tag)) {
                    b = OtpErlang.match("{requests, Reqs:lx}", request);
                    if (b != null) {
                        final Collection<OtpErlangObject> reqs = b.getList("Reqs");
                        OtpErlangObject val = null;
                        for (final OtpErlangObject r : reqs) {
                            val = processRequest(from, r);
                            if (val.equals(error)) {
                                return error;
                            }
                        }
                        return val == null ? error : val;
                    }
                } else if ("setopts".equals(tag)) {
                    b = OtpErlang.match("{setopts, Opts:lx}", request);
                    if (b != null) {
                        final Collection<OtpErlangObject> opts = b.getList("Opts");
                        return callback.setOpts(opts);
                    }
                } else if ("get_geometry".equals(tag)) {
                    return OtpErlang.mkTuple(new OtpErlangAtom("error"),
                            new OtpErlangAtom("enotsup"));
View Full Code Here

        if (!event.getTopic().equals(getTopic())) {
            return;
        }
        final OtpErlangObject data = event.getEvent();
        try {
            final Bindings b = OtpErlang.match("{K:a,M}", data);
            final String kind = ((OtpErlangAtom) b.get("K")).atomValue();
            final OtpErlangObject amsg = b.get("M");
            ErlLogger.debug("%s: %s", kind, OtpErlang.asString(amsg));
        } catch (final Exception e) {
            ErlLogger.error("erroneous log msg: %s", data);
        }
    }
View Full Code Here

    @Test
    public void testMatch_novar() throws Exception {
        final OtpErlangObject p = OtpErlang.parse("[a, {b}]");
        final OtpErlangObject t1 = OtpErlang.parse("[a, {b}]");
        final Bindings r = OtpErlang.match(p, t1);
        Assert.assertNotNull(r);
    }
View Full Code Here

        Assert.assertNotNull(r);
    }

    @Test
    public void testMatch() throws Exception {
        final Bindings r = OtpErlang.match("[W, V]", "[a, b]");
        Assert.assertEquals(r.get("W"), new OtpErlangAtom("a"));
        Assert.assertEquals(r.get("V"), new OtpErlangAtom("b"));
    }
View Full Code Here

        Assert.assertEquals(r.get("V"), new OtpErlangAtom("b"));
    }

    @Test
    public void testMatch_0() throws Exception {
        final Bindings b = new BindingsImpl();
        b.put("W", new OtpErlangAtom("a"));
        final Bindings r = OtpErlang.match("[W, V]", "[a, b]", b);
        Assert.assertNotNull(r);
        Assert.assertEquals(r.get("V"), new OtpErlangAtom("b"));
    }
View Full Code Here

        Assert.assertEquals(r.get("V"), new OtpErlangAtom("b"));
    }

    @Test
    public void testMatch_1() throws Exception {
        final Bindings r = OtpErlang.match("[W, V]", "[\"a\", {[1, 2]}]");
        Assert.assertEquals(r.get("W"), new OtpErlangString("a"));
        Assert.assertEquals(r.get("V"), OtpErlang.parse("{[1, 2]}"));
    }
View Full Code Here

        Assert.assertEquals(r.get("V"), OtpErlang.parse("{[1, 2]}"));
    }

    @Test
    public void testMatch_same() throws Exception {
        final Bindings r = OtpErlang.match("[W, {V}]", "[a, {a}]");
        Assert.assertEquals(r.get("W"), new OtpErlangAtom("a"));
    }
View Full Code Here

        Assert.assertEquals(r.get("W"), new OtpErlangAtom("a"));
    }

    @Test
    public void testMatch_any() throws Exception {
        final Bindings r = OtpErlang.match("[_, {_}]", "[a, {b}]");
        Assert.assertNotNull(r);
    }
View Full Code Here

TOP

Related Classes of org.erlide.util.erlang.Bindings

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.