netwerk/streamconv/nsStreamConverterService.h
author Andrea Marchesini <amarchesini@mozilla.com>
Tue, 24 Oct 2017 14:38:23 +0200
changeset 387852 17c1e024efc2ac9dd1638c568d70c91548e986dc
parent 385076 67a8e12324569dd730347187e2ffccae486c758b
child 416428 17e1f96d453f869f9bb64cc1d889320ca2b4adba
permissions -rw-r--r--
Bug 1409329 - NS_NewBufferedOutputStream should take the ownership of the outputStream, r=smaug

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef __nsstreamconverterservice__h___
#define __nsstreamconverterservice__h___

#include "nsIStreamConverterService.h"

#include "nsClassHashtable.h"
#include "nsCOMArray.h"
#include "nsStringFwd.h"
#include "nsTArrayForwardDeclare.h"

class nsAtom;

class nsStreamConverterService : public nsIStreamConverterService {
public:
    /////////////////////////////////////////////////////
    // nsISupports methods
    NS_DECL_ISUPPORTS


    /////////////////////////////////////////////////////
    // nsIStreamConverterService methods
    NS_DECL_NSISTREAMCONVERTERSERVICE

    /////////////////////////////////////////////////////
    // nsStreamConverterService methods
    nsStreamConverterService();

private:
    virtual ~nsStreamConverterService();

    // Responsible for finding a converter for the given MIME-type.
    nsresult FindConverter(const char *aContractID, nsTArray<nsCString> **aEdgeList);
    nsresult BuildGraph(void);
    nsresult AddAdjacency(const char *aContractID);
    nsresult ParseFromTo(const char *aContractID, nsCString &aFromRes, nsCString &aToRes);

    // member variables
    nsClassHashtable<nsCStringHashKey, nsTArray<RefPtr<nsAtom>>>
        mAdjacencyList;
};

#endif // __nsstreamconverterservice__h___