public string buildMessage_DirectBroker()
{
const string PREFIX = "{XWB}";
const string HDR = "007XWB;;;;";
string sParams = "";
DictionaryHashList lst = null;
string text = null;
for (int i=0; i<parameters.Count; i++)
{
Parameter vp = (Parameter)parameters[i];
int pType = vp.Type;
if (pType == LITERAL)
{
sParams += StringUtils.strPack('0' + vp.Value,3);
}
else if (pType == REFERENCE)
{
sParams += StringUtils.strPack('1' + vp.Value,3);
}
else if (pType == LIST)
{
sParams += StringUtils.strPack('2' + vp.Value,3);
lst = vp.List;
}
else if (pType == WORDPROC)
{
sParams += StringUtils.strPack('2' + vp.Value,3);
text = vp.Text;
}
}
string msg = "";
if (lst == null && text == null)
{
msg = StringUtils.strPack(HDR + buildApi(rpcName,sParams,"0"),5);
}
else if (lst != null)
{
msg = StringUtils.strPack(HDR + buildApi(rpcName,sParams,"1"),5);
for (int j = 0; j < lst.Count; j++)
{
DictionaryEntry entry = lst[j];
string key = (string)entry.Key;
string value = (string)entry.Value;
if (value == null || value == "")
{
value = "\u0001";
}
msg += StringUtils.strPack(key, 3) + StringUtils.strPack(value, 3);
}
msg += "000";
}
else
{
msg = StringUtils.strPack(HDR + buildApi(rpcName,sParams,"1"),5);
string[] lines = StringUtils.split(text,StringUtils.CRLF);
for (int i=0; i<lines.Length; i++)
{
msg += StringUtils.strPack(i.ToString(),3) +
StringUtils.strPack(lines[i] + StringUtils.CRLF,3);
}
msg += "000";
}
msg = getVersion() + msg;
msg = PREFIX + StringUtils.strPack(msg,5);
return msg;
}