OSVR Framework (Internal Development Docs)  0.6-1962-g59773924
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ClientInterfaceFactory.cpp
Go to the documentation of this file.
1 
11 // Copyright 2015 Sensics, Inc.
12 //
13 // Licensed under the Apache License, Version 2.0 (the "License");
14 // you may not use this file except in compliance with the License.
15 // You may obtain a copy of the License at
16 //
17 // http://www.apache.org/licenses/LICENSE-2.0
18 //
19 // Unless required by applicable law or agreed to in writing, software
20 // distributed under the License is distributed on an "AS IS" BASIS,
21 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 // See the License for the specific language governing permissions and
23 // limitations under the License.
24 
25 // Internal Includes
28 
29 // Library/third-party includes
30 // - none
31 
32 // Standard includes
33 // - none
34 
35 namespace osvr {
36 namespace common {
37  namespace {
39  struct StandardClientInterface : public ClientInterface {
40  public:
41  StandardClientInterface(ClientContext &ctx, std::string const &path)
42  : ClientInterface(ctx, path) {}
43  };
44  } // namespace
46  return [](ClientContext &ctx, const char path[]) {
48  if (!path) {
49  return ret;
50  }
51  std::string p(path);
52  if (p.empty()) {
53  return ret;
54  }
55  ret = make_shared<StandardClientInterface>(ctx, p);
56  return ret;
57  };
58  }
59 } // namespace common
60 } // namespace osvr
shared_ptr< ClientInterface > ClientInterfacePtr
Pointer for holding ClientInterface objects safely.
std::function< ClientInterfacePtr(ClientContext &, const char[])> ClientInterfaceFactory
A factory function type taking the client context and path, and returning a ClientInterfacePtr. The ClientContext will handle notifying its internals about the new interface before returning it.
ClientInterfaceFactory getStandardClientInterfaceFactory()
Returns a client interface factory suitable for standard client use.