Jinterface addition
Raimo Niskanen
raimo@REDACTED
Thu Mar 23 15:32:02 CET 2006
Thank you for the patch.
We will have a look at it. It is not certain it will make it into
R11B, though...
vlad.xx.dumitrescu@REDACTED (Vlad Dumitrescu XX LN/EAB) writes:
> Hi,
>
> Here is an addition to OtpEpmd.java, allowing programs to retrieve the
> list of registered nodes.
>
> best regards,
> Vlad
>
> public static String[] lookupNames() throws IOException
> {
> Socket s = null;
>
> try
> {
> OtpOutputStream obuf = new OtpOutputStream();
> s = new Socket(InetAddress.getLocalHost(), epmdPort);
>
> obuf.write2BE(1);
> obuf.write1(names4req);
>
> // send request
> obuf.writeTo(s.getOutputStream());
>
> if (traceLevel >= traceThreshold)
> System.out.println("-> NAMES (r4) ");
>
> // get reply
> byte[] tmpbuf = new byte[1024];
> int n = s.getInputStream().read(tmpbuf);
>
> if (n < 0)
> {
> // this was an r3 node => not a failure (yet)
> if (s != null)
> s.close();
> throw new IOException("Nameserver not responding when
> requesting names");
> }
>
> OtpInputStream ibuf = new OtpInputStream(tmpbuf);
>
> int port = ibuf.read4BE();
> byte[] buf = new byte[n-4];
> System.arraycopy(tmpbuf, 4, buf, 0, n-4);
> String all = new String(buf);
> return all.split("\n");
>
> } catch (IOException e)
> {
> // epmd closed the connection = fail
> if (s != null)
> s.close();
> if (traceLevel >= traceThreshold)
> System.out.println("<- (no response)");
> throw new IOException("Nameserver not responding when
> requesting names");
> } catch (OtpErlangDecodeException e)
> {
> if (s != null)
> s.close();
> if (traceLevel >= traceThreshold)
> System.out.println("<- (invalid response)");
> throw new IOException("Nameserver not responding when
> requesting names");
> }
> }
>
>
--
/ Raimo Niskanen, Erlang/OTP, Ericsson AB
More information about the erlang-bugs
mailing list