| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #if !defined(DART_IO_DISABLED) | 5 #if !defined(DART_IO_DISABLED) |
| 6 | 6 |
| 7 #include "platform/globals.h" | 7 #include "platform/globals.h" |
| 8 #if defined(TARGET_OS_FUCHSIA) | 8 #if defined(TARGET_OS_FUCHSIA) |
| 9 | 9 |
| 10 #include "bin/eventhandler.h" | 10 #include "bin/eventhandler.h" |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 delete di; | 320 delete di; |
| 321 } | 321 } |
| 322 } else { | 322 } else { |
| 323 ASSERT(new_mask == 0); | 323 ASSERT(new_mask == 0); |
| 324 socket_map_.Remove(GetHashmapKeyFromFd(fd), GetHashmapHashFromFd(fd)); | 324 socket_map_.Remove(GetHashmapKeyFromFd(fd), GetHashmapHashFromFd(fd)); |
| 325 di->Close(); | 325 di->Close(); |
| 326 LOG_INFO("Closed %d\n", di->fd()); | 326 LOG_INFO("Closed %d\n", di->fd()); |
| 327 delete di; | 327 delete di; |
| 328 } | 328 } |
| 329 | 329 |
| 330 DartUtils::PostInt32(port, 1 << kDestroyedEvent); | 330 bool success = DartUtils::PostInt32(port, 1 << kDestroyedEvent); |
| 331 if (!success) { |
| 332 LOG_ERR("Failed to post destroy event to port %ld", port); |
| 333 } |
| 331 } else if (IS_COMMAND(msg[i].data, kReturnTokenCommand)) { | 334 } else if (IS_COMMAND(msg[i].data, kReturnTokenCommand)) { |
| 332 int count = TOKEN_COUNT(msg[i].data); | 335 int count = TOKEN_COUNT(msg[i].data); |
| 333 intptr_t old_mask = di->Mask(); | 336 intptr_t old_mask = di->Mask(); |
| 334 LOG_INFO("\t Return Token: %d: %lx\n", di->fd(), old_mask); | 337 LOG_INFO("\t Return Token: %d: %lx\n", di->fd(), old_mask); |
| 335 di->ReturnTokens(msg[i].dart_port, count); | 338 di->ReturnTokens(msg[i].dart_port, count); |
| 336 UpdateEpollInstance(old_mask, di); | 339 UpdateEpollInstance(old_mask, di); |
| 337 } else if (IS_COMMAND(msg[i].data, kSetEventMaskCommand)) { | 340 } else if (IS_COMMAND(msg[i].data, kSetEventMaskCommand)) { |
| 338 // `events` can only have kInEvent/kOutEvent flags set. | 341 // `events` can only have kInEvent/kOutEvent flags set. |
| 339 intptr_t events = msg[i].data & EVENT_MASK; | 342 intptr_t events = msg[i].data & EVENT_MASK; |
| 340 ASSERT(0 == (events & ~(1 << kInEvent | 1 << kOutEvent))); | 343 ASSERT(0 == (events & ~(1 << kInEvent | 1 << kOutEvent))); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 397 intptr_t old_mask = di->Mask(); | 400 intptr_t old_mask = di->Mask(); |
| 398 Dart_Port port = di->NextNotifyDartPort(event_mask); | 401 Dart_Port port = di->NextNotifyDartPort(event_mask); |
| 399 ASSERT(port != 0); | 402 ASSERT(port != 0); |
| 400 UpdateEpollInstance(old_mask, di); | 403 UpdateEpollInstance(old_mask, di); |
| 401 LOG_INFO("HandleEvents: Posting %ld to %ld for fd=%ld\n", event_mask, | 404 LOG_INFO("HandleEvents: Posting %ld to %ld for fd=%ld\n", event_mask, |
| 402 port, di->fd()); | 405 port, di->fd()); |
| 403 bool success = DartUtils::PostInt32(port, event_mask); | 406 bool success = DartUtils::PostInt32(port, event_mask); |
| 404 if (!success) { | 407 if (!success) { |
| 405 // This can happen if e.g. the isolate that owns the port has died | 408 // This can happen if e.g. the isolate that owns the port has died |
| 406 // for some reason. | 409 // for some reason. |
| 407 FATAL2("Failed to post event for fd %ld to port %ld", di->fd(), port); | 410 LOG_ERR("Failed to post event for fd %ld to port %ld", di->fd(), |
| 411 port); |
| 408 } | 412 } |
| 409 } | 413 } |
| 410 } | 414 } |
| 411 } | 415 } |
| 412 if (interrupt_seen) { | 416 if (interrupt_seen) { |
| 413 // Handle after socket events, so we avoid closing a socket before we handle | 417 // Handle after socket events, so we avoid closing a socket before we handle |
| 414 // the current events. | 418 // the current events. |
| 415 HandleInterruptFd(); | 419 HandleInterruptFd(); |
| 416 } | 420 } |
| 417 } | 421 } |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 // The hashmap does not support keys with value 0. | 505 // The hashmap does not support keys with value 0. |
| 502 return dart::Utils::WordHash(fd + 1); | 506 return dart::Utils::WordHash(fd + 1); |
| 503 } | 507 } |
| 504 | 508 |
| 505 } // namespace bin | 509 } // namespace bin |
| 506 } // namespace dart | 510 } // namespace dart |
| 507 | 511 |
| 508 #endif // defined(TARGET_OS_FUCHSIA) | 512 #endif // defined(TARGET_OS_FUCHSIA) |
| 509 | 513 |
| 510 #endif // !defined(DART_IO_DISABLED) | 514 #endif // !defined(DART_IO_DISABLED) |
| OLD | NEW |