Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/security/nss/cpputil/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 6 kB image not shown  

Quelle  dummy_io.cc   Sprache: C

 
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */


#include <assert.h>
#include <iostream>

#include "prerror.h"
#include "prio.h"

#include "dummy_io.h"

#define UNIMPLEMENTED()                                        \
  std::cerr << "Unimplemented: " << __FUNCTION__ << std::endl; \
  assert(false);

extern const struct PRIOMethods DummyMethodsForward;

ScopedPRFileDesc DummyIOLayerMethods::CreateFD(PRDescIdentity id,
                                               DummyIOLayerMethods *methods) {
  ScopedPRFileDesc fd(PR_CreateIOLayerStub(id, &DummyMethodsForward));
  assert(fd);
  if (!fd) {
    return nullptr;
  }
  fd->secret = reinterpret_cast<PRFilePrivate *>(methods);
  return fd;
}

PRStatus DummyIOLayerMethods::Close(PRFileDesc *f) {
  f->secret = nullptr;
  f->dtor(f);
  return PR_SUCCESS;
}

int32_t DummyIOLayerMethods::Read(PRFileDesc *f, void *buf, int32_t length) {
  UNIMPLEMENTED();
  return -1;
}

int32_t DummyIOLayerMethods::Write(PRFileDesc *f, const void *buf,
                                   int32_t length) {
  UNIMPLEMENTED();
  return -1;
}

int32_t DummyIOLayerMethods::Available(PRFileDesc *f) {
  UNIMPLEMENTED();
  return -1;
}

int64_t DummyIOLayerMethods::Available64(PRFileDesc *f) {
  UNIMPLEMENTED();
  return -1;
}

PRStatus DummyIOLayerMethods::Sync(PRFileDesc *f) {
  UNIMPLEMENTED();
  return PR_FAILURE;
}

int32_t DummyIOLayerMethods::Seek(PRFileDesc *f, int32_t offset,
                                  PRSeekWhence how) {
  UNIMPLEMENTED();
  return -1;
}

int64_t DummyIOLayerMethods::Seek64(PRFileDesc *f, int64_t offset,
                                    PRSeekWhence how) {
  UNIMPLEMENTED();
  return -1;
}

PRStatus DummyIOLayerMethods::FileInfo(PRFileDesc *f, PRFileInfo *info) {
  UNIMPLEMENTED();
  return PR_FAILURE;
}

PRStatus DummyIOLayerMethods::FileInfo64(PRFileDesc *f, PRFileInfo64 *info) {
  UNIMPLEMENTED();
  return PR_FAILURE;
}

int32_t DummyIOLayerMethods::Writev(PRFileDesc *f, const PRIOVec *iov,
                                    int32_t iov_size, PRIntervalTime to) {
  UNIMPLEMENTED();
  return -1;
}

PRStatus DummyIOLayerMethods::Connect(PRFileDesc *f, const PRNetAddr *addr,
                                      PRIntervalTime to) {
  UNIMPLEMENTED();
  return PR_FAILURE;
}

PRFileDesc *DummyIOLayerMethods::Accept(PRFileDesc *sd, PRNetAddr *addr,
                                        PRIntervalTime to) {
  UNIMPLEMENTED();
  return nullptr;
}

PRStatus DummyIOLayerMethods::Bind(PRFileDesc *f, const PRNetAddr *addr) {
  UNIMPLEMENTED();
  return PR_FAILURE;
}

PRStatus DummyIOLayerMethods::Listen(PRFileDesc *f, int32_t depth) {
  UNIMPLEMENTED();
  return PR_FAILURE;
}

PRStatus DummyIOLayerMethods::Shutdown(PRFileDesc *f, int32_t how) {
  return PR_SUCCESS;
}

int32_t DummyIOLayerMethods::Recv(PRFileDesc *f, void *buf, int32_t buflen,
                                  int32_t flags, PRIntervalTime to) {
  UNIMPLEMENTED();
  return -1;
}

// Note: this is always nonblocking and assumes a zero timeout.
int32_t DummyIOLayerMethods::Send(PRFileDesc *f, const void *buf,
                                  int32_t amount, int32_t flags,
                                  PRIntervalTime to) {
  return Write(f, buf, amount);
}

int32_t DummyIOLayerMethods::Recvfrom(PRFileDesc *f, void *buf, int32_t amount,
                                      int32_t flags, PRNetAddr *addr,
                                      PRIntervalTime to) {
  UNIMPLEMENTED();
  return -1;
}

int32_t DummyIOLayerMethods::Sendto(PRFileDesc *f, const void *buf,
                                    int32_t amount, int32_t flags,
                                    const PRNetAddr *addr, PRIntervalTime to) {
  UNIMPLEMENTED();
  return -1;
}

int16_t DummyIOLayerMethods::Poll(PRFileDesc *f, int16_t in_flags,
                                  int16_t *out_flags) {
  UNIMPLEMENTED();
  return -1;
}

int32_t DummyIOLayerMethods::AcceptRead(PRFileDesc *sd, PRFileDesc **nd,
                                        PRNetAddr **raddr, void *buf,
                                        int32_t amount, PRIntervalTime t) {
  UNIMPLEMENTED();
  return -1;
}

int32_t DummyIOLayerMethods::TransmitFile(PRFileDesc *sd, PRFileDesc *f,
                                          const void *headers, int32_t hlen,
                                          PRTransmitFileFlags flags,
                                          PRIntervalTime t) {
  UNIMPLEMENTED();
  return -1;
}

// TODO: Modify to return unique names for each channel
// somehow, as opposed to always the same static address. The current
// implementation messes up the session cache, which is why it's off
// elsewhere
PRStatus DummyIOLayerMethods::Getpeername(PRFileDesc *f, PRNetAddr *addr) {
  addr->inet.family = PR_AF_INET;
  addr->inet.port = 0;
  addr->inet.ip = 0;

  return PR_SUCCESS;
}

PRStatus DummyIOLayerMethods::Getsockname(PRFileDesc *f, PRNetAddr *addr) {
  UNIMPLEMENTED();
  return PR_FAILURE;
}

PRStatus DummyIOLayerMethods::Getsockoption(PRFileDesc *f,
                                            PRSocketOptionData *opt) {
  switch (opt->option) {
    case PR_SockOpt_Nonblocking:
      opt->value.non_blocking = PR_TRUE;
      return PR_SUCCESS;
    default:
      UNIMPLEMENTED();
      break;
  }

  return PR_FAILURE;
}

PRStatus DummyIOLayerMethods::Setsockoption(PRFileDesc *f,
                                            const PRSocketOptionData *opt) {
  switch (opt->option) {
    case PR_SockOpt_Nonblocking:
      return PR_SUCCESS;
    case PR_SockOpt_NoDelay:
      return PR_SUCCESS;
    default:
      UNIMPLEMENTED();
      break;
  }

  return PR_FAILURE;
}

int32_t DummyIOLayerMethods::Sendfile(PRFileDesc *out, PRSendFileData *in,
                                      PRTransmitFileFlags flags,
                                      PRIntervalTime to) {
  UNIMPLEMENTED();
  return -1;
}

PRStatus DummyIOLayerMethods::ConnectContinue(PRFileDesc *f, int16_t flags) {
  UNIMPLEMENTED();
  return PR_FAILURE;
}

int32_t DummyIOLayerMethods::Reserved(PRFileDesc *f) {
  UNIMPLEMENTED();
  return -1;
}

100%


¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.