public virtual void Initialize(Session session, ComProxyConfiguration configuration)
{
lock (m_lock)
{
m_typeTable = session.TypeTree;
// index namspace uris.
if (configuration.NamespaceUris == null)
{
configuration.NamespaceUris = new StringCollection();
}
m_namespaceUris = new StringTableMapping();
m_namespaceUris.Initialize(configuration.NamespaceUris, session.NamespaceUris);
// index server uris.
if (configuration.ServerUris == null)
{
configuration.ServerUris = new StringCollection();
}
m_serverUris = new StringTableMapping();
m_serverUris.Initialize(configuration.ServerUris, session.ServerUris);
// create message context.
ServiceMessageContext context = new ServiceMessageContext();
context.MaxArrayLength = session.MessageContext.MaxArrayLength;
context.MaxByteStringLength = session.MessageContext.MaxByteStringLength;
context.MaxMessageSize = session.MessageContext.MaxMessageSize;
context.MaxStringLength = session.MessageContext.MaxStringLength;
context.Factory = session.MessageContext.Factory;
context.NamespaceUris = new NamespaceTable();
context.ServerUris = new StringTable();
// copy namespace uris.
context.NamespaceUris.Append(session.NamespaceUris.GetString(1));
for (int ii = 0; ii < configuration.NamespaceUris.Count; ii++)
{
context.NamespaceUris.Append(configuration.NamespaceUris[ii]);
}
// copy server uris.
context.ServerUris.Append(session.ServerUris.GetString(0));
for (int ii = 0; ii < configuration.ServerUris.Count; ii++)
{
context.ServerUris.Append(configuration.ServerUris[ii]);
}
m_localMessageContext = context;
// index mapping sets by the name assigned.
if (configuration.MappingSets != null)
{
m_mappingSets = new Dictionary<string, NodeIdMappingSet>();
for (int ii = 0; ii < configuration.MappingSets.Count; ii++)
{
UpdateMappingSet(configuration.MappingSets[ii]);
}
}
}
}