Lines Matching defs:event

28 // with one event of each kind for each entry/node.
63 NodeMonitoringEvent* event = NULL;
68 event = new(std::nothrow) EntryCreatedEvent;
71 event = new(std::nothrow) EntryRemovedEvent;
74 event = new(std::nothrow) EntryMovedEvent;
78 if (event) {
79 event->queryHandler = this;
81 if (event->Init(message) == B_OK)
82 fListener->ProcessNodeMonitoringEvent(event);
84 delete event;
283 // entry created event map
288 // entry removed event map
293 // entry moved event map
298 // node stat changed event map
303 // node attribute changed event map
1014 VolumeManager::ProcessNodeMonitoringEvent(NodeMonitoringEvent* event)
1016 if (fNodeMonitoringEvents.Push(event) != B_OK)
1017 delete event;
1059 VolumeManager::_EntryCreated(EntryCreatedEvent* event)
1062 Directory* directory = GetDirectory(event->volumeID, event->directoryID);
1066 // check, if there is an earlier similar event
1068 NoAllocEntryRef ref(event->volumeID, event->directoryID,
1069 event->name.GetString());
1072 // remove the old event
1080 // add the new event
1081 if (fEntryCreatedEvents->Put(ref, event) == B_OK) {
1082 fRecentNodeMonitoringEvents.Insert(event);
1083 event->AcquireReference();
1100 clientVolume->ProcessNodeMonitoringEvent(event);
1108 VolumeManager::_EntryRemoved(EntryRemovedEvent* event, bool keepNode)
1111 Node* node = GetNode(event->nodeVolumeID, event->nodeID);
1112 Directory* directory = GetDirectory(event->volumeID, event->directoryID);
1119 if (event->name.GetLength() == 0) {
1124 event->name.SetTo(entry->GetName());
1130 event->name.GetString());
1134 // check, if there is an earlier similar event
1136 NoAllocEntryRef ref(event->volumeID, event->directoryID,
1137 event->name.GetString());
1146 // previous event in the fEntryRemovedEvents map. We should probably
1149 // remove the old event
1157 // add the new event
1158 if (fEntryRemovedEvents->Put(ref, event) == B_OK) {
1159 fRecentNodeMonitoringEvents.Insert(event);
1160 event->AcquireReference();
1178 NodeRef nodeRef(event->nodeVolumeID, event->nodeID);
1189 clientVolume->ProcessNodeMonitoringEvent(event);
1197 VolumeManager::_EntryMoved(EntryMovedEvent* event)
1199 _CheckVolumeRootMoved(event);
1202 = GetDirectory(event->volumeID, event->fromDirectoryID);
1204 = GetDirectory(event->volumeID, event->toDirectoryID);
1205 Node* node = GetNode(event->nodeVolumeID, event->nodeID);
1214 if (event->fromName.GetLength() == 0) {
1219 event->fromName.SetTo(oldEntry->GetName());
1224 oldEntry = GetEntry(event->volumeID, event->fromDirectoryID,
1225 event->fromName.GetString());
1229 // check, if there is an earlier similar event
1231 if (event->fromName.GetLength() > 0) {
1232 EntryMovedEventKey key(event->volumeID, event->fromDirectoryID,
1233 event->fromName.GetString(), event->toDirectoryID,
1234 event->toName.GetString());
1237 // remove the old event
1245 // add the new event
1246 if (fEntryMovedEvents->Put(key, event) == B_OK) {
1247 fRecentNodeMonitoringEvents.Insert(event);
1248 event->AcquireReference();
1265 LoadEntry(event->volumeID, event->toDirectoryID,
1266 event->toName.GetString(), false, &newEntry);
1290 clientVolume->ProcessNodeMonitoringEvent(event);
1293 // event
1299 removedEvent->time = event->time;
1300 removedEvent->volumeID = event->volumeID;
1301 removedEvent->directoryID = event->fromDirectoryID;
1302 removedEvent->nodeVolumeID = event->nodeVolumeID;
1303 removedEvent->nodeID = event->nodeID;
1304 if (event->fromName.GetLength() > 0)
1305 removedEvent->name = event->fromName;
1311 // "entry created" event
1317 createdEvent->time = event->time;
1318 createdEvent->volumeID = event->volumeID;
1319 createdEvent->directoryID = event->toDirectoryID;
1320 createdEvent->name = event->toName;
1330 VolumeManager::_NodeStatChanged(StatChangedEvent* event)
1333 Node* node = GetNode(event->volumeID, event->nodeID);
1337 // check, if there is an earlier similar event
1339 NodeRef ref(event->volumeID, event->nodeID);
1342 // remove the old event
1350 // add the new event
1351 if (fNodeStatChangedEvents->Put(ref, event) == B_OK) {
1352 fRecentNodeMonitoringEvents.Insert(event);
1353 event->AcquireReference();
1365 clientVolume->ProcessNodeMonitoringEvent(event);
1372 VolumeManager::_NodeAttributeChanged(AttributeChangedEvent* event)
1375 Node* node = GetNode(event->volumeID, event->nodeID);
1379 // check, if there is an earlier similar event
1381 AttributeRef ref(event->volumeID, event->nodeID,
1382 event->attribute.GetString());
1385 // remove the old event
1393 // add the new event
1394 if (fNodeAttributeChangedEvents->Put(ref, event) == B_OK) {
1395 fRecentNodeMonitoringEvents.Insert(event);
1396 event->AcquireReference();
1405 clientVolume->ProcessNodeMonitoringEvent(event);
1412 VolumeManager::_VolumeMounted(VolumeMountedEvent* event)
1418 Directory* coveredDirectory = GetDirectory(event->volumeID,
1419 event->directoryID);
1426 // send the "entry removed" event
1427 EntryRemovedEvent* event;
1429 &event) == B_OK) {
1430 _EntryRemoved(event, true);
1431 event->ReleaseReference();
1440 _AddVolume(event->newVolumeID);
1442 // generate an "entry created" event for the root dir entry
1444 _GenerateEntryCreatedEvent(rootRef, event->time);
1449 VolumeManager::_VolumeUnmounted(VolumeUnmountedEvent* event)
1452 Volume* volume = GetVolume(event->volumeID);
1474 if (_GenerateEntryRemovedEvent(entry, event->time,
1492 if (_GenerateEntryRemovedEvent(entry, event->time) != B_OK)
1513 // generate an "entry created" event for the covered node
1515 _GenerateEntryCreatedEvent(rootRef, event->time);
1520 VolumeManager::_QueryEntryCreated(EntryCreatedEvent* event)
1524 = dynamic_cast<QueryHandler*>(event->queryHandler);
1530 status_t error = LoadEntry(event->volumeID, event->directoryID,
1531 event->name.GetString(), true, &entry);
1540 event->remotePort = queryHandle->GetRemotePort();
1541 event->remoteToken = queryHandle->GetRemoteToken();
1545 queryHandler->GetQueryDomain()->ProcessQueryEvent(event);
1550 VolumeManager::_QueryEntryRemoved(EntryRemovedEvent* event)
1554 = dynamic_cast<QueryHandler*>(event->queryHandler);
1560 status_t error = LoadDirectory(event->volumeID, event->directoryID,
1569 event->remotePort = queryHandle->GetRemotePort();
1570 event->remoteToken = queryHandle->GetRemoteToken();
1574 queryHandler->GetQueryDomain()->ProcessQueryEvent(event);
1579 VolumeManager::_QueryEntryMoved(EntryMovedEvent* event)
1581 // we simply split the event into a `removed' and a `created' event
1592 // init the removed event
1594 removedEvent->time = event->time;
1595 removedEvent->queryHandler = event->queryHandler;
1597 removedEvent->volumeID = event->volumeID;
1598 removedEvent->directoryID = event->fromDirectoryID;
1599 removedEvent->nodeVolumeID = event->volumeID;
1600 removedEvent->nodeID = event->nodeID;
1601 removedEvent->name = event->fromName;
1603 // init the created event
1605 createdEvent->time = event->time;
1606 createdEvent->queryHandler = event->queryHandler;
1608 createdEvent->volumeID = event->volumeID;
1609 createdEvent->directoryID = event->toDirectoryID;
1610 createdEvent->nodeID = event->nodeID;
1611 createdEvent->name = event->toName;
1622 VolumeManager::_IsRecentEvent(NodeMonitoringEvent* event) const
1624 return (event && system_time() < event->time + kRecentEventLifeTime);
1639 // create the event
1640 EntryCreatedEvent* event = new(std::nothrow) EntryCreatedEvent;
1641 if (!event)
1645 event->opcode = B_ENTRY_CREATED;
1646 event->time = time;
1647 event->volumeID = entry->GetVolumeID();
1648 event->directoryID = entry->GetDirectoryID();
1649 event->nodeID = entry->GetNode()->GetID();
1650 event->name.SetTo(entry->GetName());
1653 *_event = event;
1655 _EntryCreated(event);
1656 event->ReleaseReference();
1670 // create the event
1671 EntryRemovedEvent* event = new(std::nothrow) EntryRemovedEvent;
1672 if (!event)
1676 event->opcode = B_ENTRY_REMOVED;
1677 event->time = time;
1678 event->volumeID = entry->GetVolumeID();
1679 event->directoryID = entry->GetDirectoryID();
1680 event->nodeVolumeID = entry->GetNode()->GetVolumeID();
1681 event->nodeID = entry->GetNode()->GetID();
1682 event->name.SetTo(entry->GetName());
1685 *_event = event;
1687 _EntryRemoved(event, false);
1688 event->ReleaseReference();
1696 VolumeManager::_CheckVolumeRootMoved(EntryMovedEvent* event)
1704 NoAllocEntryRef ref(event->volumeID, event->toDirectoryID,
1705 event->toName.GetString());
1710 event->nodeVolumeID = st.st_dev;
1711 event->nodeID = st.st_ino;
1733 NodeMonitoringEvent* event = NULL;
1734 status_t error = fNodeMonitoringEvents.Pop(&event);
1739 if (event->queryHandler) {
1740 switch (event->opcode) {
1743 dynamic_cast<EntryCreatedEvent*>(event));
1747 dynamic_cast<EntryRemovedEvent*>(event));
1750 _QueryEntryMoved(dynamic_cast<EntryMovedEvent*>(event));
1754 switch (event->opcode) {
1756 _EntryCreated(dynamic_cast<EntryCreatedEvent*>(event));
1759 _EntryRemoved(dynamic_cast<EntryRemovedEvent*>(event),
1763 _EntryMoved(dynamic_cast<EntryMovedEvent*>(event));
1767 dynamic_cast<StatChangedEvent*>(event));
1771 dynamic_cast<AttributeChangedEvent*>(event));
1774 _VolumeMounted(dynamic_cast<VolumeMountedEvent*>(event));
1778 dynamic_cast<VolumeUnmountedEvent*>(event));
1782 event->ReleaseReference();
1784 // If there is another event available, get it as long as we
1786 error = fNodeMonitoringEvents.Pop(&event, 0);