Skip to content

Datatypes

Joe DeVivo edited this page Aug 21, 2013 · 11 revisions

Existing Datatypes

As of 8/21/2013, Cuttlefish supports the following datatypes:

integer

integer is exactly what it sounds like.

enum

enum is great! You know the fixed set of options for a setting, so use this one.

ip

The ip datatype exists currently as an IP/Port combo, and it's currently under discussion as to whether or not we want ip and ip/port to be different datatypes.

string

string is the default datatype. Everything in a .conf file is a string anyway, so we're guaranteed a successful conversion.

duration

durations are fixed intervals of time, the largest unit of which will be a one week. Anything larger will have to be expressed in terms of weeks, since larger units (month, year) are of variable duration. durations manifest in .conf files as strings like this: 1w2d.

The following units are supported:

  • w - week
  • d - day
  • h - hour
  • m - minute
  • s - second
  • ms - millisecond

You can use any combination of these. I'm not sure why you'd want to specify 1w13ms, but you can.

Did I mention you can use floats here? "0.5d"? no probalo.

Keep your eyes on this file cuttlefish_duration.erl for developments on this.

duration will convert automatically to milliseconds in your app.config. If you want it to be seconds instead of milliseconds, just use the datatype duration_secs. It will round up to the nearest second, so 1ms = 999ms = 1s. Confused? You won't be, after this week's episode of...Soap.

bytesize

In your app.config, these will end up as bytes in integers, so 1kb = 1024.

bytesize will work pretty much like duration but with three differences.

  • The units will are mb, kb, and gb
  • If no unit is specified, it's just bytes
  • You will only be able to use ONE unit. e.g. no 4gb3kb <- that makes no sense!

Datatypes scheduled for addition

file / dir

file / dir only exists as an idea at this point. It will allow for included validators like valid path and exists. Some files may need to exist, some may not. some may need to be writable. I'm not sure this makes the first release.