OpenCOVER
coVRCommunication.h
Go to the documentation of this file.
1/* This file is part of COVISE.
2
3 You can use it under the terms of the GNU Lesser General Public License
4 version 2.1 or later, see lgpl-2.1.txt.
5
6 * License: LGPL 2+ */
7
8#ifndef COVRCOMMUNICATION_H
9#define COVRCOMMUNICATION_H
10
24namespace covise
25{
26class Message;
27class UdpMessage;
28
29}
30
31#include "ui/Owner.h"
32#include "coVRMessageSender.h"
33
34#include <net/message_types.h>
35#include <vrb/SessionID.h>
36#include <vrb/client/ClientRegistryClass.h>
37#include <vrb/client/SharedState.h>
38
39#include <map>
40namespace vrui
41{
43}
44namespace vrb {
45class SharedStateManager;
46class VrbClientRegistry;
47}
48namespace opencover
49{
50class VRBData;
51class IData;
52class coVRPartner;
53class VrbMenu;
54namespace ui
55{
56class Owner;
57class Group;
58class FileBrowser;
59class Action;
60class SelectionList;
61}
62class COVEREXPORT coVRCommunication: public vrb::regClassObserver, public opencover::coVRMessageSender
63{
64public:
65 void init();
67
69 void processARVideoFrame(const char * key, const char * tmp);
70 void processVRBMessage(covise::TokenBuffer &tb);
71
72 bool collaborative(); // returns true, if in collaborative mode
73 bool isMaster(); // returns true, if we are master
74
75 static const char *getHostname();
76 static const char *getHostaddress();
77 static std::string getUsername();
78 int getID();
79 const vrb::SessionID &getPrivateSessionID() const;
80 const vrb::SessionID &getSessionID() const;
81 const vrb::SessionID &getUsedSessionID() const;
82
83 void setSessionID(const vrb::SessionID &id);
84
85 void saveSessionFile(covise::TokenBuffer &tb);
86 void loadSessionFile(const std::string &fileName);
87
89 void setFBData(IData *data);
90 void handleVRB(const covise::Message &msg);
91 void handleUdp(covise::UdpMessage* msg);
92 void setCurrentFile(const char *filename);
93 virtual void update(vrb::clientRegClass *theChangedClass);
94
96 covise::Message *waitForMessage(int messageType);
97 std::unique_ptr<vrb::VrbClientRegistry> registry;
98 std::unique_ptr<vrb::SharedStateManager> sharedStateManager;
99
100 //add callback that is called after first contact with vrb
101 void addOnConnectCallback(std::function<void(void)> function);
102 //add callback that is called when vrb disconnects
103 void addOnDisconnectCallback(std::function<void(void)> function);
104 //set link to covise plugin function to get message from covise socket
105 void setWaitMessagesCallback(std::function<std::vector<covise::Message*>(void)> cb);
106 //set link to covise plugin function to handle a covise message
107 void setHandleMessageCallback(std::function<void(covise::Message *)> cb);
108
109 std::vector<covise::Message*> waitCoviseMessages();
110 void handleCoviseMessage(covise::Message* m);
111 //called from coVRFileManager to make sure cover->filemenue is initialized
113private:
114 static coVRCommunication *s_instance;
115
116 vrui::coNavInteraction* remoteNavInteraction = nullptr;
117 int randomID = 0;
118 bool ignoreRemoteTransform = false;
119 std::map<int, VRBData *> mfbData;
120 std::unique_ptr<VrbMenu> m_vrbMenu;
121 vrb::SessionID m_privateSessionID;
122 std::vector<std::function<void(void)>> onConnectCallbacks;
123 std::vector<std::function<void(void)>> onDisconnectCallbacks;
124 //covise plugin callbacks
125 std::function <std::vector<covise::Message*>(void)> waitMessagesCallback;
126 std::function<void(covise::Message*)> handleMessageCallback;
128 //inform interested parties about connention to vrb or covise
129 void connected();
130 //inform interested parties about disconnection from vrb or covise
131 void disconnected();
132 void toggleClientState(bool state);
133 coVRPartner *me();
134 const coVRPartner *me() const;
135
136};
137}
138#endif
Definition: ARToolKit.h:33
Definition: coTabletUI.h:51
Definition: coTabletUI.h:59
collaborative interface manager
Definition: coVRCommunication.h:41
Definition: coVRCommunication.h:63
void loadSessionFile(const std::string &fileName)
void handleCoviseMessage(covise::Message *m)
static std::string getUsername()
void processVRBMessage(covise::TokenBuffer &tb)
static const char * getHostaddress()
void processARVideoFrame(const char *key, const char *tmp)
std::unique_ptr< vrb::SharedStateManager > sharedStateManager
Definition: coVRCommunication.h:98
virtual void update(vrb::clientRegClass *theChangedClass)
const vrb::SessionID & getUsedSessionID() const
void setSessionID(const vrb::SessionID &id)
static coVRCommunication * instance()
void setFBData(IData *data)
void saveSessionFile(covise::TokenBuffer &tb)
void addOnDisconnectCallback(std::function< void(void)> function)
void setCurrentFile(const char *filename)
covise::Message * waitForMessage(int messageType)
void handleVRB(const covise::Message &msg)
void setHandleMessageCallback(std::function< void(covise::Message *)> cb)
std::vector< covise::Message * > waitCoviseMessages()
static const char * getHostname()
std::unique_ptr< vrb::VrbClientRegistry > registry
Definition: coVRCommunication.h:97
const vrb::SessionID & getSessionID() const
void handleUdp(covise::UdpMessage *msg)
void setWaitMessagesCallback(std::function< std::vector< covise::Message * >(void)> cb)
const vrb::SessionID & getPrivateSessionID() const
void addOnConnectCallback(std::function< void(void)> function)
Definition: coVRMessageSender.h:9
Definition: coVRPartner.h:35
Definition: coNavInteraction.h:19