private ActiveSub(Client c, string messageType, AMPSExcel.AMPSAddin.SubscriptionDefinition d, Excel.Workbook workbook)
{
_def = d;
_client = c;
_messageType = MessageTypeFactory.forName(messageType);
string[] rangeParts = d.WorksheetRange.Split('!');
_worksheet = workbook.Worksheets[rangeParts[0]];
Excel.Range where = _worksheet.Range[rangeParts[1]];
_row = where.Row;
_col = where.Column;
_columns["SOWKey"] = where.Column;
_workbook = workbook;
where.Value = "AMPS Subscription: "+ d.Name;
_empty.Clear();
int count = _worksheet.Rows.Count;
for (int i = _row; i < count; ++i)
{
var cell = _worksheet.Cells[i, _col];
if (!string.IsNullOrEmpty(cell.Text))
{
string text = cell.Text;
if (text == "(deleted)")
_empty.Enqueue(i);
else
_rows[text.Trim('|')] = i;
}
else
{
_lastrow = i;
break;
}
}
_cmdId = c.sowAndDeltaSubscribe(x => ReceivedMessage(x), d.Topic, d.Filter, 100, true, true, 1000);
Globals.AMPSAddin.Application.WorkbookBeforeClose += new Excel.AppEvents_WorkbookBeforeCloseEventHandler(Application_WorkbookBeforeClose);
workbook.BeforeClose += new Excel.WorkbookEvents_BeforeCloseEventHandler(workbook_BeforeClose);
}