mirror of https://github.com/grpc/grpc.git
commit
d04dc4da81
46 changed files with 565 additions and 243 deletions
@ -0,0 +1,54 @@ |
|||||||
|
/*
|
||||||
|
* |
||||||
|
* Copyright 2016, Google Inc. |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or without |
||||||
|
* modification, are permitted provided that the following conditions are |
||||||
|
* met: |
||||||
|
* |
||||||
|
* * Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* * Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following disclaimer |
||||||
|
* in the documentation and/or other materials provided with the |
||||||
|
* distribution. |
||||||
|
* * Neither the name of Google Inc. nor the names of its |
||||||
|
* contributors may be used to endorse or promote products derived from |
||||||
|
* this software without specific prior written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
* |
||||||
|
*/ |
||||||
|
|
||||||
|
#include "src/core/lib/channel/handshaker_factory.h" |
||||||
|
|
||||||
|
#include <grpc/support/log.h> |
||||||
|
|
||||||
|
void grpc_handshaker_factory_add_handshakers( |
||||||
|
grpc_exec_ctx *exec_ctx, grpc_handshaker_factory *handshaker_factory, |
||||||
|
const grpc_channel_args *args, grpc_handshake_manager *handshake_mgr) { |
||||||
|
if (handshaker_factory != NULL) { |
||||||
|
GPR_ASSERT(handshaker_factory->vtable != NULL); |
||||||
|
handshaker_factory->vtable->add_handshakers(exec_ctx, handshaker_factory, |
||||||
|
args, handshake_mgr); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void grpc_handshaker_factory_destroy( |
||||||
|
grpc_exec_ctx *exec_ctx, grpc_handshaker_factory *handshaker_factory) { |
||||||
|
if (handshaker_factory != NULL) { |
||||||
|
GPR_ASSERT(handshaker_factory->vtable != NULL); |
||||||
|
handshaker_factory->vtable->destroy(exec_ctx, handshaker_factory); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,66 @@ |
|||||||
|
/*
|
||||||
|
* |
||||||
|
* Copyright 2016, Google Inc. |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or without |
||||||
|
* modification, are permitted provided that the following conditions are |
||||||
|
* met: |
||||||
|
* |
||||||
|
* * Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* * Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following disclaimer |
||||||
|
* in the documentation and/or other materials provided with the |
||||||
|
* distribution. |
||||||
|
* * Neither the name of Google Inc. nor the names of its |
||||||
|
* contributors may be used to endorse or promote products derived from |
||||||
|
* this software without specific prior written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
* |
||||||
|
*/ |
||||||
|
|
||||||
|
#ifndef GRPC_CORE_LIB_CHANNEL_HANDSHAKER_FACTORY_H |
||||||
|
#define GRPC_CORE_LIB_CHANNEL_HANDSHAKER_FACTORY_H |
||||||
|
|
||||||
|
#include <grpc/impl/codegen/grpc_types.h> |
||||||
|
|
||||||
|
#include "src/core/lib/channel/handshaker.h" |
||||||
|
#include "src/core/lib/iomgr/exec_ctx.h" |
||||||
|
|
||||||
|
// A handshaker factory is used to create handshakers.
|
||||||
|
|
||||||
|
typedef struct grpc_handshaker_factory grpc_handshaker_factory; |
||||||
|
|
||||||
|
typedef struct { |
||||||
|
void (*add_handshakers)(grpc_exec_ctx *exec_ctx, |
||||||
|
grpc_handshaker_factory *handshaker_factory, |
||||||
|
const grpc_channel_args *args, |
||||||
|
grpc_handshake_manager *handshake_mgr); |
||||||
|
void (*destroy)(grpc_exec_ctx *exec_ctx, |
||||||
|
grpc_handshaker_factory *handshaker_factory); |
||||||
|
} grpc_handshaker_factory_vtable; |
||||||
|
|
||||||
|
struct grpc_handshaker_factory { |
||||||
|
const grpc_handshaker_factory_vtable *vtable; |
||||||
|
}; |
||||||
|
|
||||||
|
void grpc_handshaker_factory_add_handshakers( |
||||||
|
grpc_exec_ctx *exec_ctx, grpc_handshaker_factory *handshaker_factory, |
||||||
|
const grpc_channel_args *args, grpc_handshake_manager *handshake_mgr); |
||||||
|
|
||||||
|
void grpc_handshaker_factory_destroy( |
||||||
|
grpc_exec_ctx *exec_ctx, grpc_handshaker_factory *handshaker_factory); |
||||||
|
|
||||||
|
#endif /* GRPC_CORE_LIB_CHANNEL_HANDSHAKER_FACTORY_H */ |
@ -0,0 +1,113 @@ |
|||||||
|
/*
|
||||||
|
* |
||||||
|
* Copyright 2016, Google Inc. |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or without |
||||||
|
* modification, are permitted provided that the following conditions are |
||||||
|
* met: |
||||||
|
* |
||||||
|
* * Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* * Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following disclaimer |
||||||
|
* in the documentation and/or other materials provided with the |
||||||
|
* distribution. |
||||||
|
* * Neither the name of Google Inc. nor the names of its |
||||||
|
* contributors may be used to endorse or promote products derived from |
||||||
|
* this software without specific prior written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
* |
||||||
|
*/ |
||||||
|
|
||||||
|
#include "src/core/lib/channel/handshaker_registry.h" |
||||||
|
|
||||||
|
#include <string.h> |
||||||
|
|
||||||
|
#include <grpc/support/alloc.h> |
||||||
|
|
||||||
|
//
|
||||||
|
// grpc_handshaker_factory_list
|
||||||
|
//
|
||||||
|
|
||||||
|
typedef struct { |
||||||
|
grpc_handshaker_factory** list; |
||||||
|
size_t num_factories; |
||||||
|
} grpc_handshaker_factory_list; |
||||||
|
|
||||||
|
static void grpc_handshaker_factory_list_register( |
||||||
|
grpc_handshaker_factory_list* list, bool at_start, |
||||||
|
grpc_handshaker_factory* factory) { |
||||||
|
list->list = gpr_realloc( |
||||||
|
list->list, (list->num_factories + 1) * sizeof(grpc_handshaker_factory*)); |
||||||
|
if (at_start) { |
||||||
|
memmove(list->list + 1, list->list, |
||||||
|
sizeof(grpc_handshaker_factory*) * list->num_factories); |
||||||
|
list->list[0] = factory; |
||||||
|
} else { |
||||||
|
list->list[list->num_factories] = factory; |
||||||
|
} |
||||||
|
++list->num_factories; |
||||||
|
} |
||||||
|
|
||||||
|
static void grpc_handshaker_factory_list_add_handshakers( |
||||||
|
grpc_exec_ctx* exec_ctx, grpc_handshaker_factory_list* list, |
||||||
|
const grpc_channel_args* args, grpc_handshake_manager* handshake_mgr) { |
||||||
|
for (size_t i = 0; i < list->num_factories; ++i) { |
||||||
|
grpc_handshaker_factory_add_handshakers(exec_ctx, list->list[i], args, |
||||||
|
handshake_mgr); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
static void grpc_handshaker_factory_list_destroy( |
||||||
|
grpc_exec_ctx* exec_ctx, grpc_handshaker_factory_list* list) { |
||||||
|
for (size_t i = 0; i < list->num_factories; ++i) { |
||||||
|
grpc_handshaker_factory_destroy(exec_ctx, list->list[i]); |
||||||
|
} |
||||||
|
gpr_free(list->list); |
||||||
|
} |
||||||
|
|
||||||
|
//
|
||||||
|
// plugin
|
||||||
|
//
|
||||||
|
|
||||||
|
static grpc_handshaker_factory_list |
||||||
|
g_handshaker_factory_lists[NUM_HANDSHAKER_TYPES]; |
||||||
|
|
||||||
|
void grpc_handshaker_factory_registry_init() { |
||||||
|
memset(g_handshaker_factory_lists, 0, sizeof(g_handshaker_factory_lists)); |
||||||
|
} |
||||||
|
|
||||||
|
void grpc_handshaker_factory_registry_shutdown(grpc_exec_ctx* exec_ctx) { |
||||||
|
for (size_t i = 0; i < NUM_HANDSHAKER_TYPES; ++i) { |
||||||
|
grpc_handshaker_factory_list_destroy(exec_ctx, |
||||||
|
&g_handshaker_factory_lists[i]); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void grpc_handshaker_factory_register(bool at_start, |
||||||
|
grpc_handshaker_type handshaker_type, |
||||||
|
grpc_handshaker_factory* factory) { |
||||||
|
grpc_handshaker_factory_list_register( |
||||||
|
&g_handshaker_factory_lists[handshaker_type], at_start, factory); |
||||||
|
} |
||||||
|
|
||||||
|
void grpc_handshakers_add(grpc_exec_ctx* exec_ctx, |
||||||
|
grpc_handshaker_type handshaker_type, |
||||||
|
const grpc_channel_args* args, |
||||||
|
grpc_handshake_manager* handshake_mgr) { |
||||||
|
grpc_handshaker_factory_list_add_handshakers( |
||||||
|
exec_ctx, &g_handshaker_factory_lists[handshaker_type], args, |
||||||
|
handshake_mgr); |
||||||
|
} |
@ -0,0 +1,63 @@ |
|||||||
|
/*
|
||||||
|
* |
||||||
|
* Copyright 2016, Google Inc. |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or without |
||||||
|
* modification, are permitted provided that the following conditions are |
||||||
|
* met: |
||||||
|
* |
||||||
|
* * Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* * Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following disclaimer |
||||||
|
* in the documentation and/or other materials provided with the |
||||||
|
* distribution. |
||||||
|
* * Neither the name of Google Inc. nor the names of its |
||||||
|
* contributors may be used to endorse or promote products derived from |
||||||
|
* this software without specific prior written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
* |
||||||
|
*/ |
||||||
|
|
||||||
|
#ifndef GRPC_CORE_LIB_CHANNEL_HANDSHAKER_REGISTRY_H |
||||||
|
#define GRPC_CORE_LIB_CHANNEL_HANDSHAKER_REGISTRY_H |
||||||
|
|
||||||
|
#include <grpc/impl/codegen/grpc_types.h> |
||||||
|
|
||||||
|
#include "src/core/lib/channel/handshaker_factory.h" |
||||||
|
#include "src/core/lib/iomgr/exec_ctx.h" |
||||||
|
|
||||||
|
typedef enum { |
||||||
|
HANDSHAKER_CLIENT = 0, |
||||||
|
HANDSHAKER_SERVER, |
||||||
|
NUM_HANDSHAKER_TYPES, // Must be last.
|
||||||
|
} grpc_handshaker_type; |
||||||
|
|
||||||
|
void grpc_handshaker_factory_registry_init(); |
||||||
|
void grpc_handshaker_factory_registry_shutdown(grpc_exec_ctx* exec_ctx); |
||||||
|
|
||||||
|
/// Registers a new handshaker factory. Takes ownership.
|
||||||
|
/// If \a at_start is true, the new handshaker will be at the beginning of
|
||||||
|
/// the list. Otherwise, it will be added to the end.
|
||||||
|
void grpc_handshaker_factory_register(bool at_start, |
||||||
|
grpc_handshaker_type handshaker_type, |
||||||
|
grpc_handshaker_factory* factory); |
||||||
|
|
||||||
|
void grpc_handshakers_add(grpc_exec_ctx* exec_ctx, |
||||||
|
grpc_handshaker_type handshaker_type, |
||||||
|
const grpc_channel_args* args, |
||||||
|
grpc_handshake_manager* handshake_mgr); |
||||||
|
|
||||||
|
#endif /* GRPC_CORE_LIB_CHANNEL_HANDSHAKER_REGISTRY_H */ |
@ -1,39 +0,0 @@ |
|||||||
@rem Copyright 2016, Google Inc. |
|
||||||
@rem All rights reserved. |
|
||||||
@rem |
|
||||||
@rem Redistribution and use in source and binary forms, with or without |
|
||||||
@rem modification, are permitted provided that the following conditions are |
|
||||||
@rem met: |
|
||||||
@rem |
|
||||||
@rem * Redistributions of source code must retain the above copyright |
|
||||||
@rem notice, this list of conditions and the following disclaimer. |
|
||||||
@rem * Redistributions in binary form must reproduce the above |
|
||||||
@rem copyright notice, this list of conditions and the following disclaimer |
|
||||||
@rem in the documentation and/or other materials provided with the |
|
||||||
@rem distribution. |
|
||||||
@rem * Neither the name of Google Inc. nor the names of its |
|
||||||
@rem contributors may be used to endorse or promote products derived from |
|
||||||
@rem this software without specific prior written permission. |
|
||||||
@rem |
|
||||||
@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
||||||
@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|
||||||
@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|
||||||
@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|
||||||
@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
||||||
@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
||||||
@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
|
||||||
@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
|
||||||
@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
||||||
@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
||||||
@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
||||||
|
|
||||||
@rem Convenience wrapper that runs specified gRPC target using msbuild |
|
||||||
@rem Usage: build_vs2010.bat TARGET_NAME |
|
||||||
|
|
||||||
setlocal |
|
||||||
@rem Set VS variables (uses Visual Studio 2010) |
|
||||||
@call "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" x86 |
|
||||||
|
|
||||||
msbuild %* |
|
||||||
exit /b %ERRORLEVEL% |
|
||||||
endlocal |
|
Loading…
Reference in new issue