h460p.h
Go to the documentation of this file.
/*
* h460p.h
*
* H460 Presence class.
*
* h323plus library
*
* Copyright (c) 2008 ISVO (Asia) Pte. Ltd.
*
* 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/
*
* Alternatively, the contents of this file may be used under the terms
* of the General Public License (the "GNU License"), in which case the
* provisions of GNU License are applicable instead of those
* above. If you wish to allow use of your version of this file only
* under the terms of the GNU License and not to allow others to use
* your version of this file under the MPL, indicate your decision by
* deleting the provisions above and replace them with the notice and
* other provisions required by the GNU License. If you do not delete
* the provisions above, a recipient may use your version of this file
* under either the MPL or the GNU License."
*
* 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 Initial Developer of the Original Code is ISVO (Asia) Pte. Ltd.
*
* Contributor(s): Many thanks to Simon Horne.
*
* $Revision: 21523 $
* $Author: csoutheren $
* $Date: 2008-11-13 23:50:45 -0600 (Thu, 13 Nov 2008) $
*/
#ifndef OPAL_H460_H460P_H
#define OPAL_H460_H460P_H
#include <opal/buildopts.h>
#if OPAL_H460
#include <h460/h460pres.h>
// Derive you implementation from H323PresenceHandler.
class H323PresenceSubscriptions;
class H323PresenceNotifications;
class H323PresenceIdentifiers;
class H323PresenceInstructions;
class H323PresenceHandler : public PObject
{
PCLASSINFO(H323PresenceHandler, PObject);
public:
bool ReceivedPDU(const H225_EndpointIdentifier * id,const PASN_OctetString & pdu);
enum MsgType {
e_Status,
e_Instruct,
e_Authorize,
e_Notify,
e_Request,
e_Response,
e_Alive,
e_Remove,
e_Alert
};
// Callbacks
virtual void OnNotification(MsgType /*tag*/,
const H225_EndpointIdentifier * /*id*/,
const H460P_PresenceNotification & /*notify*/) {}
virtual void OnSubscription(MsgType /*tag*/,
const H225_EndpointIdentifier * /*id*/,
const H460P_PresenceSubscription & /*subscription*/) {}
virtual void OnInstructions(MsgType /*tag*/,
const H225_EndpointIdentifier * /*id*/,
const H460P_ArrayOf_PresenceInstruction & /*instruction*/) {}
virtual void OnIdentifiers(MsgType /*tag*/,
const H460P_ArrayOf_PresenceIdentifier & /*identifier*/) {}
// Build Messages
H460P_PresenceStatus & BuildStatus(H460P_PresenceMessage & msg,
const H323PresenceNotifications & notify,
const H323PresenceInstructions & inst);
H460P_PresenceInstruct & BuildInstruct(H460P_PresenceMessage & msg,
const H323PresenceInstructions & inst);
H460P_PresenceAuthorize & BuildAuthorize(H460P_PresenceMessage & msg,
const H323PresenceSubscriptions & subs);
H460P_PresenceNotify & BuildNotify(H460P_PresenceMessage & msg,
const H323PresenceNotifications & notify);
H460P_PresenceRequest & BuildRequest(H460P_PresenceMessage & msg,
const H323PresenceSubscriptions & subs);
H460P_PresenceResponse & BuildResponse(H460P_PresenceMessage & msg,
const H323PresenceSubscriptions & subs);
H460P_PresenceAlive & BuildAlive(H460P_PresenceMessage & msg,
const H323PresenceIdentifiers & id);
H460P_PresenceRemove & BuildRemove(H460P_PresenceMessage & msg,
const H323PresenceIdentifiers & id);
H460P_PresenceAlert & BuildAlert(H460P_PresenceMessage & msg,
const H323PresenceNotifications & notify);
};
class H323PresenceNotification : public H460P_PresenceNotification
{
public:
enum States {
e_hidden,
e_available,
e_online,
e_offline,
e_onCall,
e_voiceMail,
e_notAvailable,
e_generic
};
static PString GetStateString(unsigned state);
void SetPresenceState(States state, const PString & display = PString());
void SetGenericState(const PString & state);
void GetPresenceState(States & state, PString & display);
void AddSubscriber(const OpalGloballyUniqueID & guid);
OpalGloballyUniqueID GetSubscriber(PINDEX i);
void RemoveSubscribers();
void AddAlias(const PString & alias);
PString GetAlias();
};
class H323PresenceNotifications : public H460P_ArrayOf_PresenceNotification
{
public:
void Add(const H323PresenceNotification & notify);
};
class H323PresenceSubscription : public H460P_PresenceSubscription
{
public:
H323PresenceSubscription();
// Sending Gatekeeper
void SetSubscriptionDetails(const PString & subscribe, const PStringList & aliases);
void GetSubscriberDetails(PStringList & aliases);
PString GetSubscribed();
void SetGatekeeperRAS(const H323TransportAddress & address);
H323TransportAddress GetGatekeeperRAS();
// Receiving Gatekeeper/Endpoint
void MakeDecision(bool approve);
bool IsDecisionMade();
int IsApproved(); // -1 not decided; 0 - not approved; 1 - approved;
void SetTimeToLive(int t);
int GetTimeToLive();
void SetSubscription(const OpalGloballyUniqueID & guid);
OpalGloballyUniqueID GetSubscription();
protected:
void SetApproved(bool success);
};
class H323PresenceSubscriptions : public H460P_ArrayOf_PresenceSubscription
{
public:
void Add(const H323PresenceSubscription & sub);
};
class H323PresenceInstruction : public H460P_PresenceInstruction
{
public:
enum Instruction {
e_subscribe,
e_unsubscribe,
e_block,
e_unblock
};
static PString GetInstructionString(unsigned instruct);
H323PresenceInstruction(Instruction instruct, const PString & alias);
Instruction GetInstruction();
PString GetAlias();
};
class H323PresenceInstructions : public H460P_ArrayOf_PresenceInstruction
{
public:
void Add(const H323PresenceInstruction & instruct);
H323PresenceInstruction & operator[](PINDEX i) const;
};
class H323PresenceIdentifiers : public H460P_ArrayOf_PresenceIdentifier
{
public:
void Add(const OpalGloballyUniqueID & guid);
OpalGloballyUniqueID GetIdentifier(PINDEX i);
};
#endif
#endif // OPAL_H460_H460P_H
H323PresenceHandler::OnNotification
virtual void OnNotification(MsgType, const H225_EndpointIdentifier *, const H460P_PresenceNotification &)
Definition: h460p.h:76
H323PresenceNotifications::Add
void Add(const H323PresenceNotification &notify)
H323PresenceNotification::GetAlias
PString GetAlias()
H323PresenceSubscription::GetSubscription
OpalGloballyUniqueID GetSubscription()
H323PresenceIdentifiers
Definition: h460p.h:209
H323PresenceHandler::BuildAlert
H460P_PresenceAlert & BuildAlert(H460P_PresenceMessage &msg, const H323PresenceNotifications &notify)
H323PresenceHandler::MsgType
MsgType
Definition: h460p.h:63
H323PresenceSubscription::SetSubscriptionDetails
void SetSubscriptionDetails(const PString &subscribe, const PStringList &aliases)
H323PresenceInstruction::Instruction
Instruction
Definition: h460p.h:188
H323PresenceNotification::SetGenericState
void SetGenericState(const PString &state)
H323PresenceSubscription::GetTimeToLive
int GetTimeToLive()
buildopts.h
H460P_PresenceNotification
Definition: h460pres.h:685
H323PresenceSubscription::MakeDecision
void MakeDecision(bool approve)
H460P_PresenceInstruction
Definition: h460pres.h:124
H460P_PresenceStatus
Definition: h460pres.h:368
H323PresenceInstruction::GetInstructionString
static PString GetInstructionString(unsigned instruct)
H323PresenceNotification::e_onCall
Definition: h460p.h:121
H323PresenceHandler::e_Response
Definition: h460p.h:69
H323PresenceInstruction::e_block
Definition: h460p.h:191
H323PresenceHandler::OnSubscription
virtual void OnSubscription(MsgType, const H225_EndpointIdentifier *, const H460P_PresenceSubscription &)
Definition: h460p.h:79
H323PresenceSubscription::IsApproved
int IsApproved()
H323PresenceInstructions
Definition: h460p.h:202
H323PresenceNotification::RemoveSubscribers
void RemoveSubscribers()
H460P_ArrayOf_PresenceNotification
Definition: h460pres.h:210
H323PresenceInstruction::GetInstruction
Instruction GetInstruction()
H323PresenceHandler::e_Alive
Definition: h460p.h:70
H460P_PresenceRemove
Definition: h460pres.h:562
H323PresenceInstructions::Add
void Add(const H323PresenceInstruction &instruct)
H323PresenceInstruction
Definition: h460p.h:184
H323PresenceHandler::BuildInstruct
H460P_PresenceInstruct & BuildInstruct(H460P_PresenceMessage &msg, const H323PresenceInstructions &inst)
H323PresenceSubscription::H323PresenceSubscription
H323PresenceSubscription()
H323PresenceNotifications
Definition: h460p.h:142
H323PresenceHandler::BuildRequest
H460P_PresenceRequest & BuildRequest(H460P_PresenceMessage &msg, const H323PresenceSubscriptions &subs)
H323PresenceNotification::AddAlias
void AddAlias(const PString &alias)
H323PresenceInstruction::e_unblock
Definition: h460p.h:192
H323PresenceNotification::GetPresenceState
void GetPresenceState(States &state, PString &display)
H323PresenceHandler::e_Remove
Definition: h460p.h:71
H460P_ArrayOf_PresenceSubscription
Definition: h460pres.h:250
H323PresenceSubscription::GetGatekeeperRAS
H323TransportAddress GetGatekeeperRAS()
H460P_PresenceAlive
Definition: h460pres.h:537
H323PresenceNotification
Definition: h460p.h:111
H323PresenceIdentifiers::GetIdentifier
OpalGloballyUniqueID GetIdentifier(PINDEX i)
H323PresenceHandler::e_Notify
Definition: h460p.h:67
H323PresenceSubscriptions
Definition: h460p.h:178
H323PresenceHandler
Definition: h460p.h:56
H323PresenceInstruction::e_subscribe
Definition: h460p.h:189
H323PresenceNotification::States
States
Definition: h460p.h:116
H323PresenceNotification::GetSubscriber
OpalGloballyUniqueID GetSubscriber(PINDEX i)
H323PresenceNotification::e_available
Definition: h460p.h:118
H323PresenceSubscription::IsDecisionMade
bool IsDecisionMade()
H323PresenceInstruction::GetAlias
PString GetAlias()
H323PresenceHandler::ReceivedPDU
bool ReceivedPDU(const H225_EndpointIdentifier *id, const PASN_OctetString &pdu)
H323PresenceHandler::BuildRemove
H460P_PresenceRemove & BuildRemove(H460P_PresenceMessage &msg, const H323PresenceIdentifiers &id)
H323PresenceHandler::e_Alert
Definition: h460p.h:72
H323PresenceHandler::e_Status
Definition: h460p.h:64
H323PresenceSubscriptions::Add
void Add(const H323PresenceSubscription &sub)
H323PresenceInstructions::operator[]
H323PresenceInstruction & operator[](PINDEX i) const
H323PresenceNotification::GetStateString
static PString GetStateString(unsigned state)
H460P_PresenceInstruct
Definition: h460pres.h:398
H323PresenceHandler::OnIdentifiers
virtual void OnIdentifiers(MsgType, const H460P_ArrayOf_PresenceIdentifier &)
Definition: h460p.h:85
H460P_PresenceRequest
Definition: h460pres.h:473
H323PresenceSubscription::GetSubscriberDetails
void GetSubscriberDetails(PStringList &aliases)
H323PresenceNotification::e_generic
Definition: h460p.h:124
H323PresenceHandler::BuildAuthorize
H460P_PresenceAuthorize & BuildAuthorize(H460P_PresenceMessage &msg, const H323PresenceSubscriptions &subs)
H460P_PresenceResponse
Definition: h460pres.h:505
H323PresenceSubscription::SetSubscription
void SetSubscription(const OpalGloballyUniqueID &guid)
H323PresenceNotification::AddSubscriber
void AddSubscriber(const OpalGloballyUniqueID &guid)
H323PresenceSubscription::GetSubscribed
PString GetSubscribed()
H460P_PresenceNotify
Definition: h460pres.h:448
H323PresenceInstruction::e_unsubscribe
Definition: h460p.h:190
h460pres.h
H323PresenceNotification::e_online
Definition: h460p.h:119
H323PresenceHandler::OnInstructions
virtual void OnInstructions(MsgType, const H225_EndpointIdentifier *, const H460P_ArrayOf_PresenceInstruction &)
Definition: h460p.h:82
H323PresenceNotification::e_notAvailable
Definition: h460p.h:123
H323PresenceNotification::SetPresenceState
void SetPresenceState(States state, const PString &display=PString())
H460P_ArrayOf_PresenceIdentifier
Definition: h460pres.h:310
H460P_PresenceMessage
Definition: h460pres.h:38
H460P_PresenceSubscription
Definition: h460pres.h:612
H323PresenceHandler::BuildNotify
H460P_PresenceNotify & BuildNotify(H460P_PresenceMessage &msg, const H323PresenceNotifications &notify)
H323PresenceHandler::e_Authorize
Definition: h460p.h:66
H323PresenceSubscription
Definition: h460p.h:149
H323PresenceNotification::e_offline
Definition: h460p.h:120
H323PresenceHandler::BuildAlive
H460P_PresenceAlive & BuildAlive(H460P_PresenceMessage &msg, const H323PresenceIdentifiers &id)
H460P_PresenceAlert
Definition: h460pres.h:587
H323PresenceIdentifiers::Add
void Add(const OpalGloballyUniqueID &guid)
H323PresenceHandler::e_Request
Definition: h460p.h:68
OpalGloballyUniqueID
#define OpalGloballyUniqueID
Definition: guid.h:42
H323PresenceHandler::BuildResponse
H460P_PresenceResponse & BuildResponse(H460P_PresenceMessage &msg, const H323PresenceSubscriptions &subs)
H323PresenceSubscription::SetApproved
void SetApproved(bool success)
H323PresenceNotification::e_voiceMail
Definition: h460p.h:122
H460P_ArrayOf_PresenceInstruction
Definition: h460pres.h:230
H323TransportAddress
Definition: transaddr.h:66
H323PresenceSubscription::SetGatekeeperRAS
void SetGatekeeperRAS(const H323TransportAddress &address)
H323PresenceHandler::BuildStatus
H460P_PresenceStatus & BuildStatus(H460P_PresenceMessage &msg, const H323PresenceNotifications &notify, const H323PresenceInstructions &inst)
H323PresenceHandler::e_Instruct
Definition: h460p.h:65
H323PresenceNotification::e_hidden
Definition: h460p.h:117
H323PresenceInstruction::H323PresenceInstruction
H323PresenceInstruction(Instruction instruct, const PString &alias)
H460P_PresenceAuthorize
Definition: h460pres.h:423
H323PresenceSubscription::SetTimeToLive
void SetTimeToLive(int t)