// -*- mode: C++; tab-width: 8; -*- // vi:ts=8 sw=4 noexpandtab autoindent /** * netportparser.h - Parse a P4PORT-like string ([transport:][host:]port). * * Copyright 2011 Perforce Software. All rights reserved. * * This file is part of Perforce - the FAST SCM System. */ class NetPortParser { public: enum PPOpts { PPO_NONE = 0, PPO_TRANSPORT = 1, PPO_PORT = 2, PPO_BOTH = PPO_TRANSPORT | PPO_PORT }; // Orthodox Canonical Form (OCF) methods NetPortParser(); NetPortParser( const StrRef &portstr); NetPortParser( const char *portstr); NetPortParser( const NetPortParser &rhs); virtual ~NetPortParser(); virtual const NetPortParser & operator=( const NetPortParser &rhs); virtual bool operator==( const NetPortParser &rhs) const; virtual bool operator!=( const NetPortParser &rhs) const; // accessors bool MustRfc3484() const; // should we follow RFC 3484? bool MayIPv4() const; bool MayIPv6() const; bool PreferIPv4() const; bool PreferIPv6() const; // P4PORT listed IPv6 explicitly bool WantIPv6() const; bool MayRSH() const; bool MustRSH() const; bool MustSSL() const; bool MustIPv4() const; bool MustIPv6() const; const StrBuf & Transport() const { return mTransport; } const StrPtr & Port() const { return mPort; } int PortNum() const; const StrPtr & Host() const { return mHost; } const StrPtr & HostPort() const { return mHostPort; } const StrBuf & String() const { return mPortString; } // construct a StrBuf from the requested pieces const StrBuf String(PPOpts opts) const; // mutators // Other methods void Parse(); void Parse(const StrRef &portstr); bool IsValid(Error *e) const; const StrBuf GetQualifiedP4Port( StrBuf &serverSpecAddr, Error &e ) const; protected: private: enum PrefixType { PT_NONE, PT_RSH, PT_TCP, PT_TCP4, PT_TCP6, PT_TCP46, PT_TCP64, PT_SSL, PT_SSL4, PT_SSL6, PT_SSL46, PT_SSL64 }; struct Prefix { const char *mName; PrefixType mType; }; StrBuf mPortString; // saved P4PORT (or -p) input string StrBuf mTransport; // parsed transport prefix string StrBuf mHost; // parsed host string StrBuf mPort; // parsed port string StrBuf mHostPort; // parsed host+port string bool mPortColon; // true iff there was a colon starting the port field Prefix mPrefix; // parsed transport prefix private: const Prefix * FindPrefix( const char *prefix, int len); };
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 18760 | rlranft |
Populate -o //guest/perforce_software/p4/... //guest/rlranft/p4/.... |
||
//guest/perforce_software/p4/2014-2/net/netportparser.h | |||||
#1 | 15903 | Matt Attaway | Everything should be happy now between the Workshop and the depot paths | ||
//guest/perforce_software/p4/2014_2/net/netportparser.h | |||||
#1 | 15901 | Matt Attaway | Clean up code to fit modern Workshop naming standards | ||
//guest/perforce_software/p4/2014.2/net/netportparser.h | |||||
#1 | 12189 | Matt Attaway | Initial (and much belated) drop of 2014.2 p4 source code |