Perform callbacks for new data.
NetEspSubscriberOptions options = new NetEspSubscriberOptions(); options.set_mode(NetEspSubscriberOptions.NET_ESP_ACCESS_MODE_T.NET_CALLBACK_ACCESS); NetEspSubscriber subscriber = new NetEspSubscriber(options, error);
NetEspSubscriber.SUBSCRIBER_EVENT_CALLBACK callbackInstance = new NetEspSubscriber.SUBSCRIBER_EVENT_CALLBACK(subscriber_callback);
subscriber.set_callback(NetEspSubscriber.NET_ESP_SUBSCRIBER_EVENT.NET_ESP_SUBSCRIBER_EVENT_ALL, callbackInstance, null, error);
subscriber.connect(error);
subscriber.subscribe_stream(stream, error);
Public static void subscriber_callback(NetEspSubscriberEvent event, ValueType data) { switch (evt.getType()) { case (uint)(NetEspSubscriber.NET_ESP_SUBSCRIBER_EVENT.NET_ESP_SUBSCRIBER_EVENT_CONNECTED): Console.WriteLine("the callback happened: connected!"); break; (uint)( NetEspSubscriber.NET_ESP_SUBSCRIBER_EVENT.NET_ESP_SUBSCRIBER_EVENT_DATA):
NetEspRowReader row_reader = null; while ((row_reader = evt.getMessageReader().next_row(error)) != null) { for (int i = 0; i < schema.get_numcolumns(); ++i) { if ( row_reader.is_null(i) == 1) { Console.Write("null, "); continue; } switch (NetEspStream.getType(schema.get_column_type((uint)i, error))) { case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_INTEGER: ivalue = row_reader.get_integer(i, error); Console.Write(ivalue + ", "); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_LONG: lvalue = row_reader.get_long(i, error); Console.Write(lvalue + ", "); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_FLOAT: fvalue = row_reader.get_float(i, error); Console.Write(fvalue + ", "); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_STRING: svalue = row_reader.get_string(i, error); Console.Write(svalue); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_DATE: dvalue = row_reader.get_date(i, error); Console.Write(dvalue + ", "); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_TIMESTAMP: tvalue = row_reader.get_timestamp(i, error); Console.Write(tvalue + ", "); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_BOOLEAN: boolvalue = row_reader.get_boolean(i, error); Console.Write(boolvalue + ", "); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_BINARY: uint buffersize = 256; binvalue = row_reader.get_binary(i, buffersize, error); Console.Write(System.Text.Encoding.Default.GetString(binvalue) + ", "); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_INTERVAL: intervalue = row_reader.get_interval(i, error); Console.Write(intervalue + ", "); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_MONEY01: mon = row_reader.get_money(i, error); Console.Write(mon.get_long(error) + ", "); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_MONEY02: lvalue = row_reader.get_money_as_long(i, error); Console.Write(lvalue + ", "); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_MONEY03: mon = row_reader.get_money(i, error); Console.Write(mon.get_long(error) + ", "); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_MONEY10: mon = row_reader.get_money(i, error); Console.Write(mon.get_long(error) + ", "); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_MONEY15: mon = row_reader.get_money(i, error); Console.Write(mon.get_long(error) + ", "); break; case NetEspStream.NET_DATA_TYPE_T.NET_ESP_DATATYPE_BIGDATETIME: bdt2 = row_reader.get_bigdatetime(i, error); long usecs = bdt2.get_microseconds(error); Console.Write(usecs + ", "); break; } } }
rc = subscriber.disconnect(error); }