Пример #1
0
  public void test_all() {
    BaseHolder pkg = new BaseHolder();
    passer.pass_state(pkg);
    assertNotNull("passer returned null for state value", pkg.value);

    this.test_state(pkg.value);

    pkg.value = null;
    passer.pass_ops(pkg);
    assertNotNull("passer returned null for interface value", pkg.value);

    this.test_ops(pkg.value);

    this.test_exception(pkg.value);

    passer.pass_nil(pkg);

    assertNull("passer returned not null for null value", pkg.value);
  }
Пример #2
0
  /**
   * Starts task process working for this peer
   *
   * <p>Works concurrently to solve challenges!
   *
   * @param jobOwner Peer to work for
   */
  public void requestWork(final PeerAddress jobOwner) {
    System.out.println("Request work from " + Passer.print(jobOwner));

    sendRequest(
        jobOwner,
        new TaskMessage(TaskMessageType.REQUEST_CHALLENGE, myWorkerID, ""),
        new OnReplyCommand() {
          @Override
          public void execute(Object replyMessageContent) {
            TaskMessage taskMessage = TaskMessage.check(replyMessageContent);
            if (taskMessage.getType() != TaskMessageType.CHALLENGE) {
              throw new IllegalStateException("Should be a Challenge response here!");
            }

            final Challenge challenge = (Challenge) taskMessage.getActualContent();
            System.out.println("Challenge received: " + challenge.toString());
            Runnable solver =
                new Runnable() {
                  @Override
                  public void run() {
                    Solution challengeSolution = challenge.solve();
                    System.out.println("Challenge solved");

                    sendRequest(
                        jobOwner,
                        new TaskMessage(
                            TaskMessageType.REQUEST_TASK, myWorkerID, challengeSolution),
                        new OnReplyCommand() {
                          @Override
                          public void execute(Object replyMessageContent2) {
                            TaskMessage taskMessage2 = TaskMessage.check(replyMessageContent2);
                            switch (taskMessage2.getType()) {
                              case TASK:
                                ReplicaBox replicaBox =
                                    (ReplicaBox) taskMessage2.getActualContent();
                                System.out.println(
                                    "Start processing task, \n\tResultKey: "
                                        + replicaBox.getResultKey());

                                workOnTaskDeceitfully(jobOwner, replicaBox);
                                System.out.println(
                                    "Some Task was received from " + Passer.print(jobOwner));
                                break;
                              case NO_TASK_AVAILABLE:
                                System.out.println(
                                    "No task available form this job owner any more");
                                // TODO
                                break;
                              case CHALLENGE_FAIL:
                                throw new IllegalStateException(
                                    "Solution failed: " + taskMessage2.getActualContent());
                              default:
                                throw new IllegalStateException(
                                    "Should be a Challenge response here!");
                            }
                          }
                        });
                  }
                };
            pool.submit(solver);
          }
        });
  }