blob: 1722175e35423ac3870a285efd6a484e7af2faa8 [file] [log] [blame]
#ifndef __server_private_h__
#define __server_private_h__ 1
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#include <qpid/dispatch/server.h>
#include <qpid/dispatch/user_fd.h>
#include <qpid/dispatch/timer.h>
#include <qpid/dispatch/alloc.h>
#include <proton/driver.h>
#include <proton/driver_extras.h>
void dx_server_timer_pending_LH(dx_timer_t *timer);
void dx_server_timer_cancel_LH(dx_timer_t *timer);
typedef enum {
CONN_STATE_CONNECTING = 0,
CONN_STATE_SASL_CLIENT,
CONN_STATE_SASL_SERVER,
CONN_STATE_OPENING,
CONN_STATE_OPERATIONAL,
CONN_STATE_FAILED,
CONN_STATE_USER
} conn_state_t;
#define CONTEXT_NO_OWNER -1
typedef enum {
CXTR_STATE_CONNECTING = 0,
CXTR_STATE_OPEN,
CXTR_STATE_FAILED
} cxtr_state_t;
struct dx_listener_t {
const dx_server_config_t *config;
void *context;
pn_listener_t *pn_listener;
};
struct dx_connector_t {
cxtr_state_t state;
const dx_server_config_t *config;
void *context;
dx_connection_t *ctx;
dx_timer_t *timer;
long delay;
};
struct dx_connection_t {
conn_state_t state;
int owner_thread;
int enqueued;
pn_connector_t *pn_cxtr;
pn_connection_t *pn_conn;
dx_listener_t *listener;
dx_connector_t *connector;
void *context; // Copy of context from listener or connector
void *user_context;
dx_user_fd_t *ufd;
};
struct dx_user_fd_t {
void *context;
int fd;
pn_connector_t *pn_conn;
};
ALLOC_DECLARE(dx_listener_t);
ALLOC_DECLARE(dx_connector_t);
ALLOC_DECLARE(dx_connection_t);
ALLOC_DECLARE(dx_user_fd_t);
#endif