send-transferrable-then-get-length.js 642 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. 'use strict';
  2. const Piscina = require('../../dist');
  3. class Shared {
  4. constructor (data) {
  5. this.name = 'shared';
  6. this.data = data;
  7. }
  8. get [Piscina.transferableSymbol] () {
  9. return [this.data];
  10. }
  11. get [Piscina.valueSymbol] () {
  12. return { name: this.name, data: this.data };
  13. }
  14. make () {
  15. return Piscina.move(this);
  16. }
  17. }
  18. let time;
  19. module.exports = {
  20. send: async () => {
  21. const data = new ArrayBuffer(128);
  22. const shared = new Shared(data);
  23. try {
  24. return shared.make();
  25. } finally {
  26. setTimeout(() => { time = data.byteLength; }, 1000);
  27. }
  28. },
  29. get: () => {
  30. return time;
  31. }
  32. };