#include <basis/astring.h>
#include <basis/mutex.h>
+#include <loggers/program_wide_logger.h>
#include <processes/ethread.h>
#include <structures/amorph.h>
using namespace basis;
+using namespace loggers;
using namespace processes;
using namespace structures;
: _group(new string_array(group_name)),
_pending(new queueton),
_input_guard(new mutex),
- _action(NIL),
- _products(NIL),
+ _action(NULL_POINTER),
+ _products(NULL_POINTER),
_backgrounded(backgrounded)
{
// we only start the thread if they've said they'll support backgrounding.
int tentacle::motivational_rate() const
{ if (_action) return _action->sleep_time(); else return 0; }
+entity_data_bin *tentacle::get_storage() { return _products; }
+
void tentacle::attach_storage(entity_data_bin &storage)
{
_products = &storage;
- if (_action) _action->start(NIL);
+ if (_action) _action->start(NULL_POINTER);
}
void tentacle::detach_storage()
{
if (_action) _action->stop();
- _products = NIL;
+ _products = NULL_POINTER;
}
bool tentacle::store_product(infoton *product,
const octopus_request_id &original_id)
{
-#ifdef DEBUG_TENTACLE
FUNCDEF("store_product");
-#endif
if (!_products) {
-#ifdef DEBUG_TENTACLE
+//#ifdef DEBUG_TENTACLE
LOG("storage bunker has not been established!");
-#endif
+//#endif
return false;
}
return _products->add_item(product, original_id);
infoton *tentacle::next_request(octopus_request_id &item_id)
{
GRAB_CONSUMER_LOCK;
- if (!_pending->elements()) return NIL; // nothing to return.
+ if (!_pending->elements()) return NULL_POINTER; // nothing to return.
infoton *to_return = (*_pending)[0]->_product;
- (*_pending)[0]->_product = NIL;
+ (*_pending)[0]->_product = NULL_POINTER;
// clean out so destructor doesn't delete the object.
item_id = (*_pending)[0]->_id;
_pending->zap(0, 0);
void tentacle::propel_arm()
{
-#ifdef DEBUG_TENTACLE
FUNCDEF("propel_arm");
-#endif
- infoton *next_item = NIL;
+ infoton *next_item = NULL_POINTER;
do {
octopus_request_id id;
next_item = next_request(id);