本文整理汇总了C#中Erlang类的典型用法代码示例。如果您正苦于以下问题:C# Erlang类的具体用法?C# Erlang怎么用?C# Erlang使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
Erlang类属于命名空间,在下文中一共展示了Erlang类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OtpMbox
// package constructor: called by OtpNode:createMbox(name)
// to create a named mbox
internal OtpMbox(OtpNode home, Erlang.Pid self, System.String name)
{
this._self = self;
this.home = home;
this.name = name;
this.queue = new GenericQueue();
this.links = new Links(10);
this.monitors = new System.Collections.Hashtable(49, (float)0.95);
}
示例2: OtpMsg
// send has receiver pid but no sender information
internal OtpMsg(Erlang.Pid to, OtpInputStream paybuf)
{
this.tag = sendTag;
this.from = null;
this.to = to;
this.toName = null;
this.paybuf = paybuf;
this.payload = null;
}
示例3: subst
public override bool subst(ref Erlang.Object obj, Erlang.VarBind binding)
{
if (isAny() || binding == null || binding.Empty)
throw new UnboundVarException();
Erlang.Object term = binding[m_var];
if (term == null)
throw new UnboundVarException("Variable " + m_var + " not bound!");
obj = term;
return true;
}
示例4: OtpOutputStream
/*
* Create a stream containing the serialized Erlang term.
* Optionally include in the beginning Erlang protocol version byte.
**/
public OtpOutputStream(Erlang.Object o, bool writeVersion, bool writePktSize)
: this()
{
if (!writePktSize)
{
encodeObject(o, writeVersion);
return;
}
write4BE(0); // make space for length data,
// but final value is not yet known
encodeObject(o, writeVersion);
poke4BE(0, this._count - 4);
}
示例5: addLink
internal virtual void addLink(Erlang.Pid local, Erlang.Pid remote)
{
lock(this)
{
int i;
if ((i = find(local, remote)) == - 1)
{
if (_count >= _links.Length)
{
Link[] tmp = new Link[_count * 2];
Array.Copy(_links, 0, tmp, 0, _count);
_links = tmp;
}
_links[_count++] = new Link(local, remote);
}
}
}
示例6: OtpMsg
// exit (etc) has from, to, reason
internal OtpMsg(Tag tag, Erlang.Pid from, Erlang.Pid to, Erlang.Object reason)
: this(tag, from, to, null, reason, null)
{
}
示例7: OtpOutputStream
/*
* Create a stream containing the encoded version of the given
* Erlang term.
**/
public OtpOutputStream(Erlang.Object o)
: this()
{
this.write_any(o);
}
示例8: match
public override bool match(Erlang.Object pattern, VarBind binding)
{
if (pattern is Erlang.Var)
pattern.match(this, binding);
else if (!(pattern is Erlang.List))
return false;
Erlang.List tup = pattern as Erlang.List;
if (arity() != tup.arity())
return false;
for (int i = 0; i < arity(); ++i)
if (!elems[i].match(tup[i], binding))
return false;
return true;
}
示例9: exit
/*
* <p> Send an exit signal to a remote {@link Pid pid}.
* This method does not cause any links to be broken, except
* indirectly if the remote {@link Pid pid} exits as a
* result of this exit signal. </p>
*
* @param to the {@link Pid pid} to which the exit signal
* should be sent.
*
* @param reason a string indicating the reason for the exit.
**/
// it's called exit, but it sends exit2
public virtual void exit(Erlang.Pid to, System.String reason)
{
exit(2, to, reason);
}
示例10: equals
public virtual bool equals(Erlang.Pid local, Erlang.Pid remote)
{
return ((this._local.Equals(local) && this._remote.Equals(remote)) ||
(this._local.Equals(remote) && this._remote.Equals(local)));
}
示例11: contains
public virtual bool contains(Erlang.Pid pid)
{
return (this._local.Equals(pid) || this._remote.Equals(pid));
}
示例12: Link
public Link(Erlang.Pid local, Erlang.Pid remote)
{
this._local = local;
this._remote = remote;
}
示例13: OtpMbox
// package constructor: called by OtpNode:createMbox()
// to create an anonymous
internal OtpMbox(OtpNode home, Erlang.Pid self)
: this(home, self, null)
{
}
示例14: subst
public override bool subst(ref Erlang.Object a_term, VarBind binding)
{
System.Collections.Generic.List<Erlang.Object> result =
new System.Collections.Generic.List<Erlang.Object>();
bool changed = false;
foreach (Erlang.Object term in this.elems)
{
Erlang.Object obj = null;
if (term.subst(ref obj, binding))
result.Add(obj);
else
{
changed = true;
result.Add(term);
}
}
if (!changed)
return false;
a_term = new Erlang.List(result.ToArray());
return true;
}
示例15: link
/*
* <p> Link to a remote mailbox or Erlang process. Links are
* idempotent, calling this method multiple times will not result in
* more than one link being created. </p>
*
* <p> If the remote process subsequently exits or the mailbox is
* closed, a subsequent attempt to retrieve a message through this
* mailbox will cause an {@link Exit Exit}
* exception to be raised. Similarly, if the sending mailbox is
* closed, the linked mailbox or process will receive an exit
* signal. </p>
*
* <p> If the remote process cannot be reached in order to set the
* link, the exception is raised immediately. </p>
*
* @param to the {@link Pid pid} representing the object to
* link to.
*
* @exception Exit if the {@link Pid pid} referred
* to does not exist or could not be reached.
*
**/
public virtual void link(Erlang.Pid to)
{
try
{
System.String node = to.node();
if (node.Equals(home.node()))
{
if (!home.deliver(new OtpMsg(OtpMsg.linkTag, _self, to)))
{
throw new Erlang.Exit("noproc", to);
}
}
else
{
OtpCookedConnection conn = home.getConnection(node);
if (conn != null)
conn.link(_self, to);
else
throw new Erlang.Exit("noproc", to);
}
}
catch (Erlang.Exit e)
{
throw e;
}
catch (System.Exception)
{
}
links.addLink(_self, to);
}