Exemple #1
0
    }
  return DSK_TRUE;
}

static void
dsk_bz2lib_compressor_finalize (DskBz2libCompressor *compressor)
{
  if (compressor->initialized)
    BZ2_bzCompressEnd (&compressor->bz2lib);
}
  
DSK_OBJECT_CLASS_DEFINE_CACHE_DATA(DskBz2libCompressor);
static DskBz2libCompressorClass dsk_bz2lib_compressor_class =
{ {
  DSK_OBJECT_CLASS_DEFINE(DskBz2libCompressor,
                          &dsk_octet_filter_class,
			  NULL,
			  dsk_bz2lib_compressor_finalize),
  dsk_bz2lib_compressor_process,
  dsk_bz2lib_compressor_finish
} };

DskOctetFilter *dsk_bz2lib_compressor_new   (unsigned    level)
{
  DskBz2libCompressor *rv = dsk_object_new (&dsk_bz2lib_compressor_class);
  int zrv;
  zrv = BZ2_bzCompressInit (&rv->bz2lib, level, DSK_FALSE, 0);
  if (zrv != BZ_OK)
    {
      dsk_warning ("deflateInit2 returned error: %s", bzrv_to_string (zrv));
      dsk_object_unref (rv);
      return NULL;
Exemple #2
0
  SSL_CTX *ctx;
  char *password;
};

static void
dsk_ssl_context_finalize (DskSslContext *context)
{
  if (context->ctx)
    SSL_CTX_free (context->ctx);
  dsk_free (context->password);
}

DSK_OBJECT_CLASS_DEFINE_CACHE_DATA(DskSslContext);
static DskSslContextClass dsk_ssl_context_class =
{
  DSK_OBJECT_CLASS_DEFINE(DskSslContext, &dsk_object_class, NULL,
                          dsk_ssl_context_finalize)
};

static int
set_password_cb (char *buf, int size, int rwflag, void *userdata)
{
  DskSslContext *ctx = userdata;
  DSK_UNUSED (rwflag);
  strncpy (buf, ctx->password, size);
  return strlen (ctx->password);
}

DskSslContext    *
dsk_ssl_context_new   (DskSslContextOptions *options,
                       DskError            **error)
{
Exemple #3
0
#include "dsk.h"

DSK_OBJECT_CLASS_DEFINE_CACHE_DATA(DskOctetFilter);
const DskOctetFilterClass dsk_octet_filter_class =
{
    DSK_OBJECT_CLASS_DEFINE (DskOctetFilter, &dsk_object_class, NULL, NULL),
    NULL, NULL
};
dsk_boolean          dsk_octet_filter_process_buffer (DskOctetFilter *filter,
        DskBuffer      *out,
        unsigned        in_len,
        DskBuffer      *in,
        dsk_boolean     discard,
        DskError      **error)
{
    DskBufferFragment *at = in->first_frag;
    unsigned to_discard;
    if (in_len > in->size)
        in_len = in->size;
    to_discard = discard ? in_len : 0;
    while (in_len != 0)
    {
        unsigned process = at->buf_length;
        if (process > in_len)
            process = in_len;
        if (!dsk_octet_filter_process (filter, out, process, at->buf + at->buf_start, error))
            return DSK_FALSE;
        in_len -= process;
        at = at->next;
    }
    dsk_buffer_discard (in, to_discard);
Exemple #4
0
    return DSK_IO_RESULT_AGAIN;
  dsk_buffer_transfer (&msink->buffer, buffer, max_xfer);
  dsk_hook_set_idle_notify (&msink->buffer_nonempty, DSK_TRUE);
  return DSK_IO_RESULT_SUCCESS;
}
static void
dsk_memory_sink_shutdown (DskOctetSink   *sink)
{
  DSK_MEMORY_SINK (sink)->got_shutdown = DSK_TRUE;
}

DSK_OBJECT_CLASS_DEFINE_CACHE_DATA (DskMemorySink);
DskMemorySinkClass dsk_memory_sink_class =
{
  {
    DSK_OBJECT_CLASS_DEFINE(DskMemorySink,
                            &dsk_octet_sink_class,
                            dsk_memory_sink_init,
                            dsk_memory_sink_finalize),
    dsk_memory_sink_write,
    dsk_memory_sink_write_buffer,
    dsk_memory_sink_shutdown
  }
};

void dsk_memory_sink_drained (DskMemorySink *sink)
{
  if (sink->buffer.size == 0)
    dsk_hook_set_idle_notify (&sink->buffer_nonempty, DSK_FALSE);
}
Exemple #5
0
  if (websocket->write_trap)
    dsk_hook_trap_destroy (websocket->write_trap);
  if (websocket->source)
    dsk_object_unref (websocket->source);
  if (websocket->sink)
    dsk_object_unref (websocket->sink);
  dsk_buffer_clear (&websocket->incoming);
  dsk_buffer_clear (&websocket->outgoing);
  dsk_hook_clear (&websocket->readable);
}

typedef DskObjectClass DskWebsocketClass;

DSK_OBJECT_CLASS_DEFINE_CACHE_DATA(DskWebsocket);
DskObjectClass dsk_websocket_class =
DSK_OBJECT_CLASS_DEFINE(DskWebsocket, &dsk_object_class,
                        dsk_websocket_init, dsk_websocket_finalize);

/* read-hook function */
static void ensure_has_read_trap (DskWebsocket *websocket);
static void ensure_has_write_trap (DskWebsocket *websocket);
static void
do_shutdown (DskWebsocket *websocket)
{
  websocket->is_shutdown = DSK_TRUE;
  if (websocket->read_trap)
    {
      dsk_hook_trap_destroy (websocket->read_trap);
      websocket->read_trap = NULL;
    }
  if (websocket->write_trap)
    {
Exemple #6
0
    dsk_dispatch_remove_timer (stream->idle_disconnect_timer);
  if (stream->reconnect_timer)
    dsk_dispatch_remove_timer (stream->reconnect_timer);
  if (stream->fd >= 0)
    {
      dsk_main_close_fd (stream->fd);
      stream->fd = -1;
    }
  dsk_free (stream->name);
}

DSK_OBJECT_CLASS_DEFINE_CACHE_DATA(DskClientStream);
DskClientStreamClass dsk_client_stream_class =
{
  { DSK_OBJECT_CLASS_DEFINE(DskClientStream, &dsk_octet_stream_class,
                            dsk_client_stream_init,
                            dsk_client_stream_finalize) }
};

void dsk_client_stream_disconnect (DskClientStream *stream)
{
  if (!stream->is_connected)
    return;

  /* close fd */
  dsk_main_close_fd (stream->fd);
  stream->is_connected = DSK_FALSE;
  stream->fd = -1;

  /* emit disconnect hook */
  dsk_hook_notify (&stream->disconnect_hook);