123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /*
- * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
- * Copyright (C) 2005-2014, Anthony Minessale II <anthm@freeswitch.org>
- *
- * Version: MPL 1.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (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.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
- *
- * The Initial Developer of the Original Code is
- * Anthony Minessale II <anthm@freeswitch.org>
- * Portions created by the Initial Developer are Copyright (C)
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Joao Mesquita <jmesquita@freeswitch.org>
- *
- */
- #ifndef FSHOST_H
- #define FSHOST_H
- #include <QThread>
- #include <QColor>
- #include <QHash>
- #include <QSharedPointer>
- #include <switch.h>
- #include "call.h"
- #include "channel.h"
- #include "account.h"
- #include "fscomm.h"
- static void eventHandlerCallback(switch_event_t *);
- static switch_status_t loggerHandler(const switch_log_node_t *, switch_log_level_t);
- class FSHost : public QThread
- {
- Q_OBJECT
- public:
- explicit FSHost(QObject *parent = 0);
- switch_status_t sendCmd(const char *cmd, const char *args, QString *res);
- void generalEventHandler(QSharedPointer<switch_event_t>event);
- void generalLoggerHandler(QSharedPointer<switch_log_node_t>node, switch_log_level_t level);
- void printEventHeaders(QSharedPointer<switch_event_t>event);
- QSharedPointer<Call> getCallByUUID(QString uuid) { return _active_calls.value(uuid); }
- QSharedPointer<Call> getCurrentActiveCall();
- QList<QSharedPointer<Account> > getAccounts() { return _accounts.values(); }
- QSharedPointer<Account> getAccountByUUID(QString uuid);
- QSharedPointer<Account> getCurrentDefaultAccount();
- QSharedPointer<Account> getAccountByName(QString accStr);
- void accountReloadCmd(QSharedPointer<Account> acc);
- QBool isModuleLoaded(QString);
- protected:
- void run(void);
- signals:
- /* Status signals */
- void coreLoadingError(QString);
- void loadingModules(QString, int, QColor);
- void loadedModule(QString, QString);
- void ready(void);
- /* Logging signals */
- void eventLog(QSharedPointer<switch_log_node_t>, switch_log_level_t);
- void newEvent(QSharedPointer<switch_event_t>);
- /* Call signals */
- void ringing(QSharedPointer<Call>);
- void answered(QSharedPointer<Call>);
- void newOutgoingCall(QSharedPointer<Call>);
- void callFailed(QSharedPointer<Call>);
- void hungup(QSharedPointer<Call>);
- /* Account signals */
- void accountStateChange(QSharedPointer<Account>);
- void newAccount(QSharedPointer<Account>);
- void delAccount(QSharedPointer<Account>);
- private slots:
- /* We need to wait for the gateway deletion before reloading it */
- void accountReloadSlot(QSharedPointer<Account>);
- void minimalModuleLoaded(QString, QString);
- private:
- /* Helper methods */
- void createFolders();
- /*FSM State handlers*/
- /** Channel Related*/
- void eventChannelCreate(QSharedPointer<switch_event_t> event, QString uuid);
- void eventChannelAnswer(QSharedPointer<switch_event_t> event, QString uuid);
- void eventChannelState(QSharedPointer<switch_event_t>event, QString uuid);
- void eventChannelExecute(QSharedPointer<switch_event_t>event, QString uuid);
- void eventChannelExecuteComplete(QSharedPointer<switch_event_t>event, QString uuid);
- void eventChannelOutgoing(QSharedPointer<switch_event_t>event, QString uuid);
- void eventChannelOriginate(QSharedPointer<switch_event_t>event, QString uuid);
- void eventChannelProgress(QSharedPointer<switch_event_t>event, QString uuid);
- void eventChannelProgressMedia(QSharedPointer<switch_event_t>event, QString uuid);
- void eventChannelBridge(QSharedPointer<switch_event_t>event, QString uuid);
- void eventChannelHangup(QSharedPointer<switch_event_t>event, QString uuid);
- void eventChannelUnbridge(QSharedPointer<switch_event_t>event, QString uuid);
- void eventChannelHangupComplete(QSharedPointer<switch_event_t>event, QString uuid);
- void eventChannelDestroy(QSharedPointer<switch_event_t>event, QString uuid);
- /** Others*/
- void eventCodec(QSharedPointer<switch_event_t>event, QString uuid);
- void eventCallUpdate(QSharedPointer<switch_event_t>event, QString uuid);
- void eventRecvInfo(QSharedPointer<switch_event_t>event, QString uuid);
- /* Structures to keep track of things */
- QHash<QString, QSharedPointer<Call> > _active_calls;
- QHash<QString, QSharedPointer<Account> > _accounts;
- QHash<QString, QSharedPointer<Channel> > _channels;
- QList<QString> _reloading_Accounts;
- QList<QString> _loadedModules;
- };
- extern FSHost *g_FSHost;
- #endif // FSHOST_H
|