package api.account;

import api.APIResult;
import api.ExecuteResult;
import io.cppSerialization.OptimizeSerialization;
import org.jetbrains.annotations.NotNull;

/**
 * Result of requesting account status.
 * 
 * @author andrey.kuprishov
 */
@OptimizeSerialization(reason = "child of api.ExecuteResult")
public class AccountStatusResult extends ExecuteResult {
  private static final long serialVersionUID = 7829235298302525904L;
  @NotNull
  private AccountStatus accountStatus = AccountStatus.Inactive;

  public AccountStatusResult(@NotNull APIResult status, @NotNull String reason, @NotNull AccountStatus accountStatus) {
    super(status, reason);
    this.accountStatus = accountStatus;
  }

  public AccountStatusResult() {
  }

  @Override
  public void readCpp(@NotNull io.cppSerialization.SerializationDataInput in) throws io.cppSerialization.SerializationException {
    super.readCpp(in);
    if (in.isServerSerialization()) {
      accountStatus = in.readObject(AccountStatus.class);
    }
  }

  @Override
  public void writeCpp(@NotNull io.cppSerialization.SerializationDataOutput out) throws io.cppSerialization.SerializationException {
    super.writeCpp(out);
    if (out.isServerSerialization()) {
      out.writeObject(accountStatus);
    }
  }
}
