private void readPodMeta(FStore.Input input)
{
// handle sys bootstrap specially using just java.util.Properties
string metaName;
if ("sys" == m_podName)
{
Properties props = new Properties();
props.load(input);
input.Close();
metaName = props.getProperty("pod.name");
m_podVersion = props.getProperty("pod.version");
m_fcodeVersion = props.getProperty("fcode.version");
m_depends = new Depend[0];
return;
}
else
{
SysInStream sysIn = new SysInStream(input);
this.m_meta = (Map)sysIn.readProps().toImmutable();
sysIn.close();
metaName = meta("pod.name");
m_podVersion = meta("pod.version");
m_fcodeVersion = meta("fcode.version");
string dependsStr = meta("pod.depends").Trim();
if (dependsStr.Length == 0) m_depends = new Depend[0];
else
{
string[] toks = dependsStr.Split(';');
m_depends = new Depend[toks.Length];
for (int i=0; i<m_depends.Length; ++i) m_depends[i] = Depend.fromStr(toks[i].Trim());
}
}
// check meta name matches podName passed to ctor
if (m_podName == null) m_podName = metaName;
if (m_podName != metaName)
throw new System.IO.IOException("Pod name mismatch " + m_podName + " != " + metaName);
// sanity checking
if (FConst.FCodeVersion != m_fcodeVersion)
throw new System.IO.IOException("Invalid fcode version " + m_fcodeVersion);
}