How to do table lookups? (fwd)

Vance Shipley <>
Wed Mar 3 21:30:28 CET 2004


}  > }    <<First:1/binary, Rest/binary>> = Bytes,
}  >
}  > The above will not work.  It should be:
}  >
}  >     <<First:8/binary, Rest/binary>> = Bytes,
}  
}  I thought if you use /binary, then the default unit is 8bits, so the
}  :1/binary = :8. At least, this is how I read it in the bit syntax. Is this
}  wrong?
  

Doh!  I didn't see the "/binary" for some reason, probably 'cause
it's a fairly strange thing to do when you wanted an integer.  You
are correct, the default unit size of a binary is 8.

}  Actually, I was looking at the gen_server, and was having an issue with
}  regards to the receives not seeming to be able to have a guard. I have a
}  couple of programs where I do synchronization based on guard expressions
}  to implement bounded queues. While I could rewrite to not do this, it
}  would definitely not be as clean.

I'm not sure I follow you.  You can implement guards as:

handle_cast({Foo, Bar}, State) when is_integer(Bar),
	Bar < 10 ->

If you want to control the number of messages in your mailbox than
you'll just need to become an expert and implement everything you
need.  If you're new to Erlang/OTP and you find you need to do this
level of hackery again you should assume you are doing soomething
wrong.

}  Back to this being somebody else's program, and so do not have an option
}  of ei.

You could alwaysd write a wrapper in C using ei.

}  Nope, OpenBSD/Linux. The program does not detect that the listening
}  program has closed the file descriptors, and so hangs on full pipes
}  without dying.

Your wrapper could solve this.

	-Vance



More information about the erlang-questions mailing list