Skip to content

Commit

Permalink
Complete small atoms support
Browse files Browse the repository at this point in the history
  • Loading branch information
Robert Newson committed May 26, 2012
1 parent 17917fa commit 5e00c59
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 4 deletions.
3 changes: 2 additions & 1 deletion src/main/scala/scalang/node/HandshakeMessages.scala
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,11 @@ object DistributionFlags {
val exportPtrTag = 0x200
val bitBinaries = 0x400
val newFloats = 0x800
val smallAtomTags = 0x4000

val default = extendedReferences | extendedPidsPorts |
bitBinaries | newFloats | funTags | newFunTags |
distMonitor | distMonitorName
distMonitor | distMonitorName | smallAtomTags
}

class ErlangAuthException(msg : String) extends Exception(msg)
6 changes: 5 additions & 1 deletion src/main/scala/scalang/node/ScalaTermDecoder.scala
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,11 @@ class ScalaTermDecoder(peer : Symbol, factory : TypeFactory) extends OneToOneDec
case 115 => //small atom
val length = buffer.readUnsignedByte
val str = ScalaTermDecoder.fastString(buffer, length)
CachedSymbol(str)
CachedSymbol(str) match {
case 'true => true
case 'false => false
case atom => atom
}
case 117 => //fun
val numFree = buffer.readInt
val pid = readTerm(buffer).asInstanceOf[Pid]
Expand Down
9 changes: 7 additions & 2 deletions src/main/scala/scalang/node/ScalaTermEncoder.scala
Original file line number Diff line number Diff line change
Expand Up @@ -215,9 +215,14 @@ class ScalaTermEncoder(peer: Symbol) extends OneToOneEncoder with Logging with I
}

def writeAtom(buffer : ChannelBuffer, s : Symbol) {
buffer.writeByte(100)
val bytes = s.name.getBytes
buffer.writeShort(bytes.length)
if (bytes.length < 256) {
buffer.writeByte(115)
buffer.writeByte(bytes.length)
} else {
buffer.writeByte(100)
buffer.writeShort(bytes.length)
}
buffer.writeBytes(bytes)
}

Expand Down

0 comments on commit 5e00c59

Please sign in to comment.